feat: centralize app release configuration

This commit is contained in:
richjohnrambo
2026-09-12 17:07:49 +08:00
parent 2728f35069
commit e5fbca735d
13 changed files with 257 additions and 104 deletions
+36
View File
@@ -186,6 +186,42 @@ func (c *adminInternalClient) TenantLoginIPWhitelist(id types.TenantID) (*tenant
return &result, nil
}
func (c *adminInternalClient) LatestAppRelease(platform, channel string) (*types.AppRelease, error) {
query := url.Values{}
query.Set("platform", strings.ToLower(strings.TrimSpace(platform)))
query.Set("channel", strings.ToLower(strings.TrimSpace(channel)))
var dto struct {
ID int64 `json:"id"`
Platform string `json:"platform"`
Channel string `json:"channel"`
LatestVersion string `json:"latest_version"`
MinSupportedVersion string `json:"min_supported_version"`
UpdateType string `json:"update_type"`
ReleaseNotes string `json:"release_notes"`
StoreURL string `json:"store_url"`
PackageURL string `json:"package_url"`
Checksum string `json:"checksum"`
RemindAfterSeconds int `json:"remind_after_seconds"`
PublishedAt string `json:"published_at"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
if err := c.getJSON("/internal/im-config/app/releases/latest", query, &dto); err != nil {
return nil, err
}
parseTime := func(raw string) time.Time {
parsed, _ := time.Parse(time.RFC3339Nano, raw)
return parsed
}
return &types.AppRelease{
ID: dto.ID, Platform: dto.Platform, Channel: dto.Channel,
LatestVersion: dto.LatestVersion, MinSupportedVersion: dto.MinSupportedVersion,
UpdateType: dto.UpdateType, ReleaseNotes: dto.ReleaseNotes, StoreURL: dto.StoreURL,
PackageURL: dto.PackageURL, Checksum: dto.Checksum, RemindAfterSeconds: dto.RemindAfterSeconds,
PublishedAt: parseTime(dto.PublishedAt), CreatedAt: parseTime(dto.CreatedAt), UpdatedAt: parseTime(dto.UpdatedAt),
}, nil
}
func (c *adminInternalClient) getJSON(path string, query url.Values, out any) error {
if c == nil || c.http == nil {
return types.ErrUnsupported