feat: support multiple terminal fonts (#17257)

Fixes: https://github.com/coder/coder/issues/15024
This commit is contained in:
Marcin Tojek
2025-04-07 14:30:10 +02:00
committed by GitHub
parent 30f41cdd42
commit 743d308eb3
29 changed files with 815 additions and 230 deletions

View File

@ -6448,20 +6448,6 @@ func (q *FakeQuerier) GetUserActivityInsights(_ context.Context, arg database.Ge
return rows, nil
}
func (q *FakeQuerier) GetUserAppearanceSettings(_ context.Context, userID uuid.UUID) (string, error) {
q.mutex.RLock()
defer q.mutex.RUnlock()
for _, uc := range q.userConfigs {
if uc.UserID != userID || uc.Key != "theme_preference" {
continue
}
return uc.Value, nil
}
return "", sql.ErrNoRows
}
func (q *FakeQuerier) GetUserByEmailOrUsername(_ context.Context, arg database.GetUserByEmailOrUsernameParams) (database.User, error) {
if err := validateDatabaseType(arg); err != nil {
return database.User{}, err
@ -6674,6 +6660,34 @@ func (q *FakeQuerier) GetUserStatusCounts(_ context.Context, arg database.GetUse
return result, nil
}
func (q *FakeQuerier) GetUserTerminalFont(ctx context.Context, userID uuid.UUID) (string, error) {
q.mutex.RLock()
defer q.mutex.RUnlock()
for _, uc := range q.userConfigs {
if uc.UserID != userID || uc.Key != "terminal_font" {
continue
}
return uc.Value, nil
}
return "", sql.ErrNoRows
}
func (q *FakeQuerier) GetUserThemePreference(_ context.Context, userID uuid.UUID) (string, error) {
q.mutex.RLock()
defer q.mutex.RUnlock()
for _, uc := range q.userConfigs {
if uc.UserID != userID || uc.Key != "theme_preference" {
continue
}
return uc.Value, nil
}
return "", sql.ErrNoRows
}
func (q *FakeQuerier) GetUserWorkspaceBuildParameters(_ context.Context, params database.GetUserWorkspaceBuildParametersParams) ([]database.GetUserWorkspaceBuildParametersRow, error) {
q.mutex.RLock()
defer q.mutex.RUnlock()
@ -11015,33 +11029,6 @@ func (q *FakeQuerier) UpdateTemplateWorkspacesLastUsedAt(_ context.Context, arg
return nil
}
func (q *FakeQuerier) UpdateUserAppearanceSettings(_ context.Context, arg database.UpdateUserAppearanceSettingsParams) (database.UserConfig, error) {
err := validateDatabaseType(arg)
if err != nil {
return database.UserConfig{}, err
}
q.mutex.Lock()
defer q.mutex.Unlock()
for i, uc := range q.userConfigs {
if uc.UserID != arg.UserID || uc.Key != "theme_preference" {
continue
}
uc.Value = arg.ThemePreference
q.userConfigs[i] = uc
return uc, nil
}
uc := database.UserConfig{
UserID: arg.UserID,
Key: "theme_preference",
Value: arg.ThemePreference,
}
q.userConfigs = append(q.userConfigs, uc)
return uc, nil
}
func (q *FakeQuerier) UpdateUserDeletedByID(_ context.Context, id uuid.UUID) error {
q.mutex.Lock()
defer q.mutex.Unlock()
@ -11367,6 +11354,60 @@ func (q *FakeQuerier) UpdateUserStatus(_ context.Context, arg database.UpdateUse
return database.User{}, sql.ErrNoRows
}
func (q *FakeQuerier) UpdateUserTerminalFont(ctx context.Context, arg database.UpdateUserTerminalFontParams) (database.UserConfig, error) {
err := validateDatabaseType(arg)
if err != nil {
return database.UserConfig{}, err
}
q.mutex.Lock()
defer q.mutex.Unlock()
for i, uc := range q.userConfigs {
if uc.UserID != arg.UserID || uc.Key != "terminal_font" {
continue
}
uc.Value = arg.TerminalFont
q.userConfigs[i] = uc
return uc, nil
}
uc := database.UserConfig{
UserID: arg.UserID,
Key: "terminal_font",
Value: arg.TerminalFont,
}
q.userConfigs = append(q.userConfigs, uc)
return uc, nil
}
func (q *FakeQuerier) UpdateUserThemePreference(_ context.Context, arg database.UpdateUserThemePreferenceParams) (database.UserConfig, error) {
err := validateDatabaseType(arg)
if err != nil {
return database.UserConfig{}, err
}
q.mutex.Lock()
defer q.mutex.Unlock()
for i, uc := range q.userConfigs {
if uc.UserID != arg.UserID || uc.Key != "theme_preference" {
continue
}
uc.Value = arg.ThemePreference
q.userConfigs[i] = uc
return uc, nil
}
uc := database.UserConfig{
UserID: arg.UserID,
Key: "theme_preference",
Value: arg.ThemePreference,
}
q.userConfigs = append(q.userConfigs, uc)
return uc, nil
}
func (q *FakeQuerier) UpdateVolumeResourceMonitor(_ context.Context, arg database.UpdateVolumeResourceMonitorParams) error {
err := validateDatabaseType(arg)
if err != nil {