Initial open source release
This commit is contained in:
commit
74992e893f
377 changed files with 118084 additions and 0 deletions
2
internal/app/help/doc.go
Normal file
2
internal/app/help/doc.go
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
// Package help 提供 help.* RPC 背后的数据目录服务。
|
||||
package help
|
||||
76
internal/app/help/service.go
Normal file
76
internal/app/help/service.go
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
package help
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"telesrv/internal/domain"
|
||||
"telesrv/internal/store"
|
||||
)
|
||||
|
||||
const tdesktopClient = "tdesktop"
|
||||
const tdesktopDefaultAppConfig = `{"chat_read_mark_expire_period":604800,"chat_read_mark_size_threshold":50,"pm_read_date_expire_period":604800,"quote_length_max":1024,"telegram_antispam_group_size_min":200,"telegram_antispam_user_id":"5434988373","reactions_default":{"_":"reactionEmoji","emoticon":"👍"},"reactions_uniq_max":11,"reactions_user_max_default":1,"reactions_in_chat_max":3}`
|
||||
|
||||
// Service 提供客户端启动配置与国家区号目录。
|
||||
type Service struct {
|
||||
appConfigs store.AppConfigStore
|
||||
countries store.CountryStore
|
||||
}
|
||||
|
||||
// NewService 创建 help 服务。
|
||||
func NewService(appConfigs store.AppConfigStore, countries store.CountryStore) *Service {
|
||||
return &Service{appConfigs: appConfigs, countries: countries}
|
||||
}
|
||||
|
||||
// GetAppConfig 返回 TDesktop app config,hash 命中时返回 notModified。
|
||||
func (s *Service) GetAppConfig(ctx context.Context, hash int) (domain.AppConfig, bool, error) {
|
||||
if s == nil || s.appConfigs == nil {
|
||||
cfg := domain.AppConfig{Client: tdesktopClient, Hash: 5, JSON: []byte(tdesktopDefaultAppConfig)}
|
||||
return cfg, hash == cfg.Hash, nil
|
||||
}
|
||||
cfg, found, err := s.appConfigs.GetAppConfig(ctx, tdesktopClient)
|
||||
if err != nil {
|
||||
return domain.AppConfig{}, false, err
|
||||
}
|
||||
if !found {
|
||||
cfg = domain.AppConfig{Client: tdesktopClient, Hash: 5, JSON: []byte(tdesktopDefaultAppConfig)}
|
||||
}
|
||||
return cfg, hash != 0 && hash == cfg.Hash, nil
|
||||
}
|
||||
|
||||
// GetCountries 返回国家区号目录,hash 命中时返回 notModified。
|
||||
func (s *Service) GetCountries(ctx context.Context, langCode string, hash int) (domain.CountriesList, bool, error) {
|
||||
if s == nil || s.countries == nil {
|
||||
list := defaultCountries()
|
||||
return list, hash != 0 && hash == list.Hash, nil
|
||||
}
|
||||
list, err := s.countries.ListCountries(ctx, langCode)
|
||||
if err != nil {
|
||||
return domain.CountriesList{}, false, err
|
||||
}
|
||||
if len(list.Countries) == 0 {
|
||||
list = defaultCountries()
|
||||
}
|
||||
return list, hash != 0 && hash == list.Hash, nil
|
||||
}
|
||||
|
||||
func defaultCountries() domain.CountriesList {
|
||||
return domain.CountriesList{
|
||||
Hash: 1,
|
||||
Countries: []domain.Country{
|
||||
{
|
||||
ISO2: "US",
|
||||
DefaultName: "United States",
|
||||
CountryCodes: []domain.CountryCode{
|
||||
{CountryCode: "1", Prefixes: []string{"1"}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ISO2: "CN",
|
||||
DefaultName: "China",
|
||||
CountryCodes: []domain.CountryCode{
|
||||
{CountryCode: "86", Prefixes: []string{"86"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue