chore: tweak user settings

This commit is contained in:
Steven 2024-07-23 22:39:05 +08:00
parent 6920313b77
commit 87deeca110
13 changed files with 192 additions and 615 deletions

View File

@ -2,7 +2,7 @@ import { Option, Select } from "@mui/joy";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import BetaBadge from "@/components/BetaBadge"; import BetaBadge from "@/components/BetaBadge";
import { useUserStore } from "@/stores"; import { useUserStore } from "@/stores";
import { UserSetting, UserSetting_ColorTheme, UserSetting_Locale } from "@/types/proto/api/v1/user_setting_service"; import { UserSetting } from "@/types/proto/api/v1/user_setting_service";
const PreferenceSection: React.FC = () => { const PreferenceSection: React.FC = () => {
const { t } = useTranslation(); const { t } = useTranslation();
@ -13,39 +13,39 @@ const PreferenceSection: React.FC = () => {
const languageOptions = [ const languageOptions = [
{ {
value: UserSetting_Locale.LOCALE_EN, value: "EN",
label: "English", label: "English",
}, },
{ {
value: UserSetting_Locale.LOCALE_ZH, value: "ZH",
label: "中文", label: "中文",
}, },
{ {
value: UserSetting_Locale.LOCALE_FR, value: "FR",
label: "Français", label: "Français",
}, },
{ {
value: UserSetting_Locale.LOCALE_JA, value: "JA",
label: "日本語", label: "日本語",
}, },
]; ];
const colorThemeOptions = [ const colorThemeOptions = [
{ {
value: UserSetting_ColorTheme.COLOR_THEME_SYSTEM, value: "SYSTEM",
label: "System", label: "System",
}, },
{ {
value: UserSetting_ColorTheme.COLOR_THEME_LIGHT, value: "LIGHT",
label: "Light", label: "Light",
}, },
{ {
value: UserSetting_ColorTheme.COLOR_THEME_DARK, value: "DARK",
label: "Dark", label: "Dark",
}, },
]; ];
const handleSelectLanguage = async (locale: UserSetting_Locale) => { const handleSelectLanguage = async (locale: string) => {
await userStore.updateUserSetting( await userStore.updateUserSetting(
{ {
...userSetting, ...userSetting,
@ -55,7 +55,7 @@ const PreferenceSection: React.FC = () => {
); );
}; };
const handleSelectColorTheme = async (colorTheme: UserSetting_ColorTheme) => { const handleSelectColorTheme = async (colorTheme: string) => {
await userStore.updateUserSetting( await userStore.updateUserSetting(
{ {
...userSetting, ...userSetting,
@ -73,7 +73,7 @@ const PreferenceSection: React.FC = () => {
<div className="flex flex-row justify-start items-center gap-x-1"> <div className="flex flex-row justify-start items-center gap-x-1">
<span className="dark:text-gray-400">{t("settings.preference.color-theme")}</span> <span className="dark:text-gray-400">{t("settings.preference.color-theme")}</span>
</div> </div>
<Select defaultValue={colorTheme} onChange={(_, value) => handleSelectColorTheme(value as UserSetting_ColorTheme)}> <Select defaultValue={colorTheme} onChange={(_, value) => handleSelectColorTheme(value as string)}>
{colorThemeOptions.map((option) => { {colorThemeOptions.map((option) => {
return ( return (
<Option key={option.value} value={option.value}> <Option key={option.value} value={option.value}>
@ -88,7 +88,7 @@ const PreferenceSection: React.FC = () => {
<span className="dark:text-gray-400">{t("common.language")}</span> <span className="dark:text-gray-400">{t("common.language")}</span>
<BetaBadge /> <BetaBadge />
</div> </div>
<Select defaultValue={language} onChange={(_, value) => handleSelectLanguage(value as UserSetting_Locale)}> <Select defaultValue={language} onChange={(_, value) => handleSelectLanguage(value as string)}>
{languageOptions.map((option) => { {languageOptions.map((option) => {
return ( return (
<Option key={option.value} value={option.value}> <Option key={option.value} value={option.value}>

View File

@ -7,7 +7,6 @@ import Header from "@/components/Header";
import Navigator from "@/components/Navigator"; import Navigator from "@/components/Navigator";
import useNavigateTo from "@/hooks/useNavigateTo"; import useNavigateTo from "@/hooks/useNavigateTo";
import { useUserStore } from "@/stores"; import { useUserStore } from "@/stores";
import { UserSetting_ColorTheme, UserSetting_Locale } from "@/types/proto/api/v1/user_setting_service";
const Root: React.FC = () => { const Root: React.FC = () => {
const navigateTo = useNavigateTo(); const navigateTo = useNavigateTo();
@ -35,19 +34,19 @@ const Root: React.FC = () => {
return; return;
} }
if (isEqual(currentUserSetting.locale, UserSetting_Locale.LOCALE_ZH)) { if (isEqual(currentUserSetting.locale, "ZH")) {
i18n.changeLanguage("zh"); i18n.changeLanguage("zh");
} else if (isEqual(currentUserSetting.locale, UserSetting_Locale.LOCALE_FR)) { } else if (isEqual(currentUserSetting.locale, "FR")) {
i18n.changeLanguage("fr"); i18n.changeLanguage("fr");
} else if (isEqual(currentUserSetting.locale, UserSetting_Locale.LOCALE_JA)) { } else if (isEqual(currentUserSetting.locale, "JA")) {
i18n.changeLanguage("ja"); i18n.changeLanguage("ja");
} else { } else {
i18n.changeLanguage("en"); i18n.changeLanguage("en");
} }
if (currentUserSetting.colorTheme === UserSetting_ColorTheme.COLOR_THEME_LIGHT) { if (currentUserSetting.colorTheme === "LIGHT") {
setMode("light"); setMode("light");
} else if (currentUserSetting.colorTheme === UserSetting_ColorTheme.COLOR_THEME_DARK) { } else if (currentUserSetting.colorTheme === "DARK") {
setMode("dark"); setMode("dark");
} else { } else {
setMode("system"); setMode("system");

View File

@ -28,24 +28,11 @@ message UserSetting {
// id is the user id. // id is the user id.
int32 id = 1; int32 id = 1;
enum Locale {
LOCALE_UNSPECIFIED = 0;
LOCALE_EN = 1;
LOCALE_ZH = 2;
LOCALE_FR = 3;
LOCALE_JA = 4;
}
// locale is the user locale. // locale is the user locale.
Locale locale = 2; string locale = 2;
enum ColorTheme {
COLOR_THEME_UNSPECIFIED = 0;
COLOR_THEME_SYSTEM = 1;
COLOR_THEME_LIGHT = 2;
COLOR_THEME_DARK = 3;
}
// color_theme is the user color theme. // color_theme is the user color theme.
ColorTheme color_theme = 3; string color_theme = 3;
} }
message GetUserSettingRequest { message GetUserSettingRequest {

View File

@ -99,9 +99,6 @@
- [UpdateUserSettingResponse](#slash-api-v1-UpdateUserSettingResponse) - [UpdateUserSettingResponse](#slash-api-v1-UpdateUserSettingResponse)
- [UserSetting](#slash-api-v1-UserSetting) - [UserSetting](#slash-api-v1-UserSetting)
- [UserSetting.ColorTheme](#slash-api-v1-UserSetting-ColorTheme)
- [UserSetting.Locale](#slash-api-v1-UserSetting-Locale)
- [UserSettingService](#slash-api-v1-UserSettingService) - [UserSettingService](#slash-api-v1-UserSettingService)
- [api/v1/workspace_service.proto](#api_v1_workspace_service-proto) - [api/v1/workspace_service.proto](#api_v1_workspace_service-proto)
@ -1326,8 +1323,8 @@
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| id | [int32](#int32) | | id is the user id. | | id | [int32](#int32) | | id is the user id. |
| locale | [UserSetting.Locale](#slash-api-v1-UserSetting-Locale) | | locale is the user locale. | | locale | [string](#string) | | locale is the user locale. |
| color_theme | [UserSetting.ColorTheme](#slash-api-v1-UserSetting-ColorTheme) | | color_theme is the user color theme. | | color_theme | [string](#string) | | color_theme is the user color theme. |
@ -1336,35 +1333,6 @@
<a name="slash-api-v1-UserSetting-ColorTheme"></a>
### UserSetting.ColorTheme
| Name | Number | Description |
| ---- | ------ | ----------- |
| COLOR_THEME_UNSPECIFIED | 0 | |
| COLOR_THEME_SYSTEM | 1 | |
| COLOR_THEME_LIGHT | 2 | |
| COLOR_THEME_DARK | 3 | |
<a name="slash-api-v1-UserSetting-Locale"></a>
### UserSetting.Locale
| Name | Number | Description |
| ---- | ------ | ----------- |
| LOCALE_UNSPECIFIED | 0 | |
| LOCALE_EN | 1 | |
| LOCALE_ZH | 2 | |
| LOCALE_FR | 3 | |
| LOCALE_JA | 4 | |

View File

@ -22,113 +22,6 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
) )
type UserSetting_Locale int32
const (
UserSetting_LOCALE_UNSPECIFIED UserSetting_Locale = 0
UserSetting_LOCALE_EN UserSetting_Locale = 1
UserSetting_LOCALE_ZH UserSetting_Locale = 2
UserSetting_LOCALE_FR UserSetting_Locale = 3
UserSetting_LOCALE_JA UserSetting_Locale = 4
)
// Enum value maps for UserSetting_Locale.
var (
UserSetting_Locale_name = map[int32]string{
0: "LOCALE_UNSPECIFIED",
1: "LOCALE_EN",
2: "LOCALE_ZH",
3: "LOCALE_FR",
4: "LOCALE_JA",
}
UserSetting_Locale_value = map[string]int32{
"LOCALE_UNSPECIFIED": 0,
"LOCALE_EN": 1,
"LOCALE_ZH": 2,
"LOCALE_FR": 3,
"LOCALE_JA": 4,
}
)
func (x UserSetting_Locale) Enum() *UserSetting_Locale {
p := new(UserSetting_Locale)
*p = x
return p
}
func (x UserSetting_Locale) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (UserSetting_Locale) Descriptor() protoreflect.EnumDescriptor {
return file_api_v1_user_setting_service_proto_enumTypes[0].Descriptor()
}
func (UserSetting_Locale) Type() protoreflect.EnumType {
return &file_api_v1_user_setting_service_proto_enumTypes[0]
}
func (x UserSetting_Locale) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use UserSetting_Locale.Descriptor instead.
func (UserSetting_Locale) EnumDescriptor() ([]byte, []int) {
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{0, 0}
}
type UserSetting_ColorTheme int32
const (
UserSetting_COLOR_THEME_UNSPECIFIED UserSetting_ColorTheme = 0
UserSetting_COLOR_THEME_SYSTEM UserSetting_ColorTheme = 1
UserSetting_COLOR_THEME_LIGHT UserSetting_ColorTheme = 2
UserSetting_COLOR_THEME_DARK UserSetting_ColorTheme = 3
)
// Enum value maps for UserSetting_ColorTheme.
var (
UserSetting_ColorTheme_name = map[int32]string{
0: "COLOR_THEME_UNSPECIFIED",
1: "COLOR_THEME_SYSTEM",
2: "COLOR_THEME_LIGHT",
3: "COLOR_THEME_DARK",
}
UserSetting_ColorTheme_value = map[string]int32{
"COLOR_THEME_UNSPECIFIED": 0,
"COLOR_THEME_SYSTEM": 1,
"COLOR_THEME_LIGHT": 2,
"COLOR_THEME_DARK": 3,
}
)
func (x UserSetting_ColorTheme) Enum() *UserSetting_ColorTheme {
p := new(UserSetting_ColorTheme)
*p = x
return p
}
func (x UserSetting_ColorTheme) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (UserSetting_ColorTheme) Descriptor() protoreflect.EnumDescriptor {
return file_api_v1_user_setting_service_proto_enumTypes[1].Descriptor()
}
func (UserSetting_ColorTheme) Type() protoreflect.EnumType {
return &file_api_v1_user_setting_service_proto_enumTypes[1]
}
func (x UserSetting_ColorTheme) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use UserSetting_ColorTheme.Descriptor instead.
func (UserSetting_ColorTheme) EnumDescriptor() ([]byte, []int) {
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{0, 1}
}
type UserSetting struct { type UserSetting struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -137,9 +30,9 @@ type UserSetting struct {
// id is the user id. // id is the user id.
Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
// locale is the user locale. // locale is the user locale.
Locale UserSetting_Locale `protobuf:"varint,2,opt,name=locale,proto3,enum=slash.api.v1.UserSetting_Locale" json:"locale,omitempty"` Locale string `protobuf:"bytes,2,opt,name=locale,proto3" json:"locale,omitempty"`
// color_theme is the user color theme. // color_theme is the user color theme.
ColorTheme UserSetting_ColorTheme `protobuf:"varint,3,opt,name=color_theme,json=colorTheme,proto3,enum=slash.api.v1.UserSetting_ColorTheme" json:"color_theme,omitempty"` ColorTheme string `protobuf:"bytes,3,opt,name=color_theme,json=colorTheme,proto3" json:"color_theme,omitempty"`
} }
func (x *UserSetting) Reset() { func (x *UserSetting) Reset() {
@ -181,18 +74,18 @@ func (x *UserSetting) GetId() int32 {
return 0 return 0
} }
func (x *UserSetting) GetLocale() UserSetting_Locale { func (x *UserSetting) GetLocale() string {
if x != nil { if x != nil {
return x.Locale return x.Locale
} }
return UserSetting_LOCALE_UNSPECIFIED return ""
} }
func (x *UserSetting) GetColorTheme() UserSetting_ColorTheme { func (x *UserSetting) GetColorTheme() string {
if x != nil { if x != nil {
return x.ColorTheme return x.ColorTheme
} }
return UserSetting_COLOR_THEME_UNSPECIFIED return ""
} }
type GetUserSettingRequest struct { type GetUserSettingRequest struct {
@ -414,88 +307,70 @@ var file_api_v1_user_setting_service_proto_rawDesc = []byte{
0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xec, 0x02, 0x0a, 0x0b, 0x55, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x56, 0x0a, 0x0b, 0x55, 0x73,
0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x06, 0x6c, 0x6f, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63,
0x63, 0x61, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x6c, 0x61, 0x61, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x68, 0x65, 0x6d, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x06, 0x6c, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x68, 0x65,
0x63, 0x61, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x68, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74,
0x65, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x16, 0x47,
0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73,
0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x06, 0x4c, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65,
0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x6c,
0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53,
0x09, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74,
0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x5a, 0x48, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x69, 0x6e, 0x67, 0x22, 0xa5, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73,
0x4f, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x46, 0x52, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x43, 0x41, 0x4c, 0x45, 0x5f, 0x4a, 0x41, 0x10, 0x04, 0x22, 0x6e, 0x0a, 0x0a, 0x43, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64,
0x6f, 0x72, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x12, 0x3c, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61,
0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x48, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x45, 0x4d, 0x45, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x67, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3b,
0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x5f, 0x4c, 0x49, 0x47, 0x48, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20,
0x54, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x48, 0x45, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x4d, 0x45, 0x5f, 0x44, 0x41, 0x52, 0x4b, 0x10, 0x03, 0x22, 0x27, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52,
0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x59, 0x0a, 0x19, 0x55,
0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x69, 0x64, 0x22, 0x56, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74,
0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0c,
0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x75,
0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xa5, 0x01, 0x0a, 0x18, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72,
0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73,
0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x53,
0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x32, 0xd1, 0x02, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x85, 0x01,
0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x12, 0x23, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65,
0x73, 0x6b, 0x22, 0x59, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74,
0x3c, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0xda, 0x41, 0x02,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74,
0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x32, 0xd1, 0x02, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x2e, 0x73, 0x6c,
0x76, 0x69, 0x63, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74,
0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0xda, 0x41,
0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x18, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x75, 0x70,
0x73, 0x65, 0x22, 0x28, 0xda, 0x41, 0x02, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a,
0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x32, 0x1b, 0x2f,
0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64,
0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0xb5, 0x01, 0x0a, 0x10, 0x63,
0x6e, 0x67, 0x12, 0x26, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x6f, 0x6d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42,
0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x17, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76,
0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x6c, 0x61, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68,
0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x79, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x6c, 0x66, 0x68,
0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74,
0x6e, 0x73, 0x65, 0x22, 0x4c, 0xda, 0x41, 0x18, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69,
0x74, 0x69, 0x6e, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0c, 0x53, 0x6c, 0x61, 0x73, 0x68,
0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x5c,
0x74, 0x69, 0x6e, 0x67, 0x32, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x5c, 0x41,
0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x73, 0x42, 0xb5, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x17, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x79, 0x6f,
0x75, 0x72, 0x73, 0x65, 0x6c, 0x66, 0x68, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x73, 0x6c, 0x61,
0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69,
0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa,
0x02, 0x0c, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02,
0x0c, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18,
0x53, 0x6c, 0x61, 0x73, 0x68, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42,
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6c, 0x61, 0x73, 0x68,
0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
} }
var ( var (
@ -510,34 +385,29 @@ func file_api_v1_user_setting_service_proto_rawDescGZIP() []byte {
return file_api_v1_user_setting_service_proto_rawDescData return file_api_v1_user_setting_service_proto_rawDescData
} }
var file_api_v1_user_setting_service_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_api_v1_user_setting_service_proto_msgTypes = make([]protoimpl.MessageInfo, 5) var file_api_v1_user_setting_service_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_api_v1_user_setting_service_proto_goTypes = []any{ var file_api_v1_user_setting_service_proto_goTypes = []any{
(UserSetting_Locale)(0), // 0: slash.api.v1.UserSetting.Locale (*UserSetting)(nil), // 0: slash.api.v1.UserSetting
(UserSetting_ColorTheme)(0), // 1: slash.api.v1.UserSetting.ColorTheme (*GetUserSettingRequest)(nil), // 1: slash.api.v1.GetUserSettingRequest
(*UserSetting)(nil), // 2: slash.api.v1.UserSetting (*GetUserSettingResponse)(nil), // 2: slash.api.v1.GetUserSettingResponse
(*GetUserSettingRequest)(nil), // 3: slash.api.v1.GetUserSettingRequest (*UpdateUserSettingRequest)(nil), // 3: slash.api.v1.UpdateUserSettingRequest
(*GetUserSettingResponse)(nil), // 4: slash.api.v1.GetUserSettingResponse (*UpdateUserSettingResponse)(nil), // 4: slash.api.v1.UpdateUserSettingResponse
(*UpdateUserSettingRequest)(nil), // 5: slash.api.v1.UpdateUserSettingRequest (*fieldmaskpb.FieldMask)(nil), // 5: google.protobuf.FieldMask
(*UpdateUserSettingResponse)(nil), // 6: slash.api.v1.UpdateUserSettingResponse
(*fieldmaskpb.FieldMask)(nil), // 7: google.protobuf.FieldMask
} }
var file_api_v1_user_setting_service_proto_depIdxs = []int32{ var file_api_v1_user_setting_service_proto_depIdxs = []int32{
0, // 0: slash.api.v1.UserSetting.locale:type_name -> slash.api.v1.UserSetting.Locale 0, // 0: slash.api.v1.GetUserSettingResponse.user_setting:type_name -> slash.api.v1.UserSetting
1, // 1: slash.api.v1.UserSetting.color_theme:type_name -> slash.api.v1.UserSetting.ColorTheme 0, // 1: slash.api.v1.UpdateUserSettingRequest.user_setting:type_name -> slash.api.v1.UserSetting
2, // 2: slash.api.v1.GetUserSettingResponse.user_setting:type_name -> slash.api.v1.UserSetting 5, // 2: slash.api.v1.UpdateUserSettingRequest.update_mask:type_name -> google.protobuf.FieldMask
2, // 3: slash.api.v1.UpdateUserSettingRequest.user_setting:type_name -> slash.api.v1.UserSetting 0, // 3: slash.api.v1.UpdateUserSettingResponse.user_setting:type_name -> slash.api.v1.UserSetting
7, // 4: slash.api.v1.UpdateUserSettingRequest.update_mask:type_name -> google.protobuf.FieldMask 1, // 4: slash.api.v1.UserSettingService.GetUserSetting:input_type -> slash.api.v1.GetUserSettingRequest
2, // 5: slash.api.v1.UpdateUserSettingResponse.user_setting:type_name -> slash.api.v1.UserSetting 3, // 5: slash.api.v1.UserSettingService.UpdateUserSetting:input_type -> slash.api.v1.UpdateUserSettingRequest
3, // 6: slash.api.v1.UserSettingService.GetUserSetting:input_type -> slash.api.v1.GetUserSettingRequest 2, // 6: slash.api.v1.UserSettingService.GetUserSetting:output_type -> slash.api.v1.GetUserSettingResponse
5, // 7: slash.api.v1.UserSettingService.UpdateUserSetting:input_type -> slash.api.v1.UpdateUserSettingRequest 4, // 7: slash.api.v1.UserSettingService.UpdateUserSetting:output_type -> slash.api.v1.UpdateUserSettingResponse
4, // 8: slash.api.v1.UserSettingService.GetUserSetting:output_type -> slash.api.v1.GetUserSettingResponse 6, // [6:8] is the sub-list for method output_type
6, // 9: slash.api.v1.UserSettingService.UpdateUserSetting:output_type -> slash.api.v1.UpdateUserSettingResponse 4, // [4:6] is the sub-list for method input_type
8, // [8:10] is the sub-list for method output_type 4, // [4:4] is the sub-list for extension type_name
6, // [6:8] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension extendee
6, // [6:6] is the sub-list for extension type_name 0, // [0:4] is the sub-list for field type_name
6, // [6:6] is the sub-list for extension extendee
0, // [0:6] is the sub-list for field type_name
} }
func init() { file_api_v1_user_setting_service_proto_init() } func init() { file_api_v1_user_setting_service_proto_init() }
@ -612,14 +482,13 @@ func file_api_v1_user_setting_service_proto_init() {
File: protoimpl.DescBuilder{ File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_v1_user_setting_service_proto_rawDesc, RawDescriptor: file_api_v1_user_setting_service_proto_rawDesc,
NumEnums: 2, NumEnums: 0,
NumMessages: 5, NumMessages: 5,
NumExtensions: 0, NumExtensions: 0,
NumServices: 1, NumServices: 1,
}, },
GoTypes: file_api_v1_user_setting_service_proto_goTypes, GoTypes: file_api_v1_user_setting_service_proto_goTypes,
DependencyIndexes: file_api_v1_user_setting_service_proto_depIdxs, DependencyIndexes: file_api_v1_user_setting_service_proto_depIdxs,
EnumInfos: file_api_v1_user_setting_service_proto_enumTypes,
MessageInfos: file_api_v1_user_setting_service_proto_msgTypes, MessageInfos: file_api_v1_user_setting_service_proto_msgTypes,
}.Build() }.Build()
File_api_v1_user_setting_service_proto = out.File File_api_v1_user_setting_service_proto = out.File

View File

@ -724,23 +724,6 @@ definitions:
description: |- description: |-
expires_at is the expiration time of the access token. expires_at is the expiration time of the access token.
If expires_at is not set, the access token will never expire. If expires_at is not set, the access token will never expire.
UserSettingColorTheme:
type: string
enum:
- COLOR_THEME_UNSPECIFIED
- COLOR_THEME_SYSTEM
- COLOR_THEME_LIGHT
- COLOR_THEME_DARK
default: COLOR_THEME_UNSPECIFIED
UserSettingLocale:
type: string
enum:
- LOCALE_UNSPECIFIED
- LOCALE_EN
- LOCALE_ZH
- LOCALE_FR
- LOCALE_JA
default: LOCALE_UNSPECIFIED
apiv1AutoBackupWorkspaceSetting: apiv1AutoBackupWorkspaceSetting:
type: object type: object
properties: properties:
@ -845,10 +828,10 @@ definitions:
format: int32 format: int32
description: id is the user id. description: id is the user id.
locale: locale:
$ref: '#/definitions/UserSettingLocale' type: string
description: locale is the user locale. description: locale is the user locale.
colorTheme: colorTheme:
$ref: '#/definitions/UserSettingColorTheme' type: string
description: color_theme is the user color theme. description: color_theme is the user color theme.
apiv1Visibility: apiv1Visibility:
type: string type: string

View File

@ -23,8 +23,6 @@
- [AccessTokensUserSetting.AccessToken](#slash-store-AccessTokensUserSetting-AccessToken) - [AccessTokensUserSetting.AccessToken](#slash-store-AccessTokensUserSetting-AccessToken)
- [UserSetting](#slash-store-UserSetting) - [UserSetting](#slash-store-UserSetting)
- [ColorThemeUserSetting](#slash-store-ColorThemeUserSetting)
- [LocaleUserSetting](#slash-store-LocaleUserSetting)
- [UserSettingKey](#slash-store-UserSettingKey) - [UserSettingKey](#slash-store-UserSettingKey)
- [store/workspace_setting.proto](#store_workspace_setting-proto) - [store/workspace_setting.proto](#store_workspace_setting-proto)
@ -276,8 +274,8 @@
| user_id | [int32](#int32) | | | | user_id | [int32](#int32) | | |
| key | [UserSettingKey](#slash-store-UserSettingKey) | | | | key | [UserSettingKey](#slash-store-UserSettingKey) | | |
| access_tokens | [AccessTokensUserSetting](#slash-store-AccessTokensUserSetting) | | | | access_tokens | [AccessTokensUserSetting](#slash-store-AccessTokensUserSetting) | | |
| locale | [LocaleUserSetting](#slash-store-LocaleUserSetting) | | | | locale | [string](#string) | | |
| color_theme | [ColorThemeUserSetting](#slash-store-ColorThemeUserSetting) | | | | color_theme | [string](#string) | | |
@ -286,35 +284,6 @@
<a name="slash-store-ColorThemeUserSetting"></a>
### ColorThemeUserSetting
| Name | Number | Description |
| ---- | ------ | ----------- |
| COLOR_THEME_USER_SETTING_UNSPECIFIED | 0 | |
| SYSTEM | 1 | |
| LIGHT | 2 | |
| DARK | 3 | |
<a name="slash-store-LocaleUserSetting"></a>
### LocaleUserSetting
| Name | Number | Description |
| ---- | ------ | ----------- |
| LOCALE_USER_SETTING_UNSPECIFIED | 0 | |
| EN | 1 | |
| ZH | 2 | |
| FR | 3 | |
| JA | 4 | |
<a name="slash-store-UserSettingKey"></a> <a name="slash-store-UserSettingKey"></a>
### UserSettingKey ### UserSettingKey

View File

@ -75,113 +75,6 @@ func (UserSettingKey) EnumDescriptor() ([]byte, []int) {
return file_store_user_setting_proto_rawDescGZIP(), []int{0} return file_store_user_setting_proto_rawDescGZIP(), []int{0}
} }
type LocaleUserSetting int32
const (
LocaleUserSetting_LOCALE_USER_SETTING_UNSPECIFIED LocaleUserSetting = 0
LocaleUserSetting_EN LocaleUserSetting = 1
LocaleUserSetting_ZH LocaleUserSetting = 2
LocaleUserSetting_FR LocaleUserSetting = 3
LocaleUserSetting_JA LocaleUserSetting = 4
)
// Enum value maps for LocaleUserSetting.
var (
LocaleUserSetting_name = map[int32]string{
0: "LOCALE_USER_SETTING_UNSPECIFIED",
1: "EN",
2: "ZH",
3: "FR",
4: "JA",
}
LocaleUserSetting_value = map[string]int32{
"LOCALE_USER_SETTING_UNSPECIFIED": 0,
"EN": 1,
"ZH": 2,
"FR": 3,
"JA": 4,
}
)
func (x LocaleUserSetting) Enum() *LocaleUserSetting {
p := new(LocaleUserSetting)
*p = x
return p
}
func (x LocaleUserSetting) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (LocaleUserSetting) Descriptor() protoreflect.EnumDescriptor {
return file_store_user_setting_proto_enumTypes[1].Descriptor()
}
func (LocaleUserSetting) Type() protoreflect.EnumType {
return &file_store_user_setting_proto_enumTypes[1]
}
func (x LocaleUserSetting) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use LocaleUserSetting.Descriptor instead.
func (LocaleUserSetting) EnumDescriptor() ([]byte, []int) {
return file_store_user_setting_proto_rawDescGZIP(), []int{1}
}
type ColorThemeUserSetting int32
const (
ColorThemeUserSetting_COLOR_THEME_USER_SETTING_UNSPECIFIED ColorThemeUserSetting = 0
ColorThemeUserSetting_SYSTEM ColorThemeUserSetting = 1
ColorThemeUserSetting_LIGHT ColorThemeUserSetting = 2
ColorThemeUserSetting_DARK ColorThemeUserSetting = 3
)
// Enum value maps for ColorThemeUserSetting.
var (
ColorThemeUserSetting_name = map[int32]string{
0: "COLOR_THEME_USER_SETTING_UNSPECIFIED",
1: "SYSTEM",
2: "LIGHT",
3: "DARK",
}
ColorThemeUserSetting_value = map[string]int32{
"COLOR_THEME_USER_SETTING_UNSPECIFIED": 0,
"SYSTEM": 1,
"LIGHT": 2,
"DARK": 3,
}
)
func (x ColorThemeUserSetting) Enum() *ColorThemeUserSetting {
p := new(ColorThemeUserSetting)
*p = x
return p
}
func (x ColorThemeUserSetting) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ColorThemeUserSetting) Descriptor() protoreflect.EnumDescriptor {
return file_store_user_setting_proto_enumTypes[2].Descriptor()
}
func (ColorThemeUserSetting) Type() protoreflect.EnumType {
return &file_store_user_setting_proto_enumTypes[2]
}
func (x ColorThemeUserSetting) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ColorThemeUserSetting.Descriptor instead.
func (ColorThemeUserSetting) EnumDescriptor() ([]byte, []int) {
return file_store_user_setting_proto_rawDescGZIP(), []int{2}
}
type UserSetting struct { type UserSetting struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -257,18 +150,18 @@ func (x *UserSetting) GetAccessTokens() *AccessTokensUserSetting {
return nil return nil
} }
func (x *UserSetting) GetLocale() LocaleUserSetting { func (x *UserSetting) GetLocale() string {
if x, ok := x.GetValue().(*UserSetting_Locale); ok { if x, ok := x.GetValue().(*UserSetting_Locale); ok {
return x.Locale return x.Locale
} }
return LocaleUserSetting_LOCALE_USER_SETTING_UNSPECIFIED return ""
} }
func (x *UserSetting) GetColorTheme() ColorThemeUserSetting { func (x *UserSetting) GetColorTheme() string {
if x, ok := x.GetValue().(*UserSetting_ColorTheme); ok { if x, ok := x.GetValue().(*UserSetting_ColorTheme); ok {
return x.ColorTheme return x.ColorTheme
} }
return ColorThemeUserSetting_COLOR_THEME_USER_SETTING_UNSPECIFIED return ""
} }
type isUserSetting_Value interface { type isUserSetting_Value interface {
@ -280,11 +173,11 @@ type UserSetting_AccessTokens struct {
} }
type UserSetting_Locale struct { type UserSetting_Locale struct {
Locale LocaleUserSetting `protobuf:"varint,4,opt,name=locale,proto3,enum=slash.store.LocaleUserSetting,oneof"` Locale string `protobuf:"bytes,4,opt,name=locale,proto3,oneof"`
} }
type UserSetting_ColorTheme struct { type UserSetting_ColorTheme struct {
ColorTheme ColorThemeUserSetting `protobuf:"varint,5,opt,name=color_theme,json=colorTheme,proto3,enum=slash.store.ColorThemeUserSetting,oneof"` ColorTheme string `protobuf:"bytes,5,opt,name=color_theme,json=colorTheme,proto3,oneof"`
} }
func (*UserSetting_AccessTokens) isUserSetting_Value() {} func (*UserSetting_AccessTokens) isUserSetting_Value() {}
@ -403,7 +296,7 @@ var File_store_user_setting_proto protoreflect.FileDescriptor
var file_store_user_setting_proto_rawDesc = []byte{ var file_store_user_setting_proto_rawDesc = []byte{
0x0a, 0x18, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x0a, 0x18, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74,
0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x73, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x73, 0x6c, 0x61, 0x73,
0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64,
0x12, 0x2d, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x12, 0x2d, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e,
@ -413,57 +306,41 @@ var file_store_user_setting_proto_rawDesc = []byte{
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73,
0x74, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x73, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0c,
0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x06,
0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x73, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06,
0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f,
0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x63,
0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c,
0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x6c, 0x75, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x17, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b,
0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x6e, 0x73, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x55,
0x68, 0x65, 0x6d, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18,
0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x42, 0x07, 0x0a, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x17, 0x41, 0x63, 0x63, 0x65, 0x73, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73,
0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65,
0x6e, 0x67, 0x12, 0x55, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54,
0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x1a, 0x52, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54,
0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74,
0x6b, 0x65, 0x6e, 0x73, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65,
0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x1a, 0x52, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x62, 0x0a, 0x0e, 0x55, 0x73, 0x65,
0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x1c, 0x55,
0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4b, 0x45, 0x59, 0x5f,
0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a,
0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x62, 0x0a, 0x0d, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x53, 0x10, 0x01,
0x0e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b,
0x20, 0x0a, 0x1c, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x10, 0x03, 0x42, 0xa1, 0x01,
0x4b, 0x45, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72,
0x00, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x65, 0x42, 0x10, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72,
0x4e, 0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x10, 0x6d, 0x2f, 0x79, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x6c, 0x66, 0x68, 0x6f, 0x73, 0x74, 0x65, 0x64,
0x03, 0x2a, 0x58, 0x0a, 0x11, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x1f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x45, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x53, 0x58, 0xaa, 0x02, 0x0b, 0x53,
0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0b, 0x53, 0x6c, 0x61,
0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x45, 0x73, 0x68, 0x5c, 0x53, 0x74, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x17, 0x53, 0x6c, 0x61, 0x73, 0x68,
0x4e, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x5a, 0x48, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x46, 0x5c, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x52, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x4a, 0x41, 0x10, 0x04, 0x2a, 0x62, 0x0a, 0x15, 0x43, 0x74, 0x61, 0xea, 0x02, 0x0c, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x53, 0x74, 0x6f, 0x72,
0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x74, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x48,
0x45, 0x4d, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47,
0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a,
0x0a, 0x06, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x49,
0x47, 0x48, 0x54, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x52, 0x4b, 0x10, 0x03, 0x42,
0xa1, 0x01, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74,
0x6f, 0x72, 0x65, 0x42, 0x10, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x79, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x6c, 0x66, 0x68, 0x6f, 0x73, 0x74,
0x65, 0x64, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67,
0x65, 0x6e, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x53, 0x58, 0xaa, 0x02,
0x0b, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0b, 0x53,
0x6c, 0x61, 0x73, 0x68, 0x5c, 0x53, 0x74, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x17, 0x53, 0x6c, 0x61,
0x73, 0x68, 0x5c, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,
0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0c, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x53, 0x74,
0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -478,27 +355,23 @@ func file_store_user_setting_proto_rawDescGZIP() []byte {
return file_store_user_setting_proto_rawDescData return file_store_user_setting_proto_rawDescData
} }
var file_store_user_setting_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_store_user_setting_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_store_user_setting_proto_msgTypes = make([]protoimpl.MessageInfo, 3) var file_store_user_setting_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_store_user_setting_proto_goTypes = []any{ var file_store_user_setting_proto_goTypes = []any{
(UserSettingKey)(0), // 0: slash.store.UserSettingKey (UserSettingKey)(0), // 0: slash.store.UserSettingKey
(LocaleUserSetting)(0), // 1: slash.store.LocaleUserSetting (*UserSetting)(nil), // 1: slash.store.UserSetting
(ColorThemeUserSetting)(0), // 2: slash.store.ColorThemeUserSetting (*AccessTokensUserSetting)(nil), // 2: slash.store.AccessTokensUserSetting
(*UserSetting)(nil), // 3: slash.store.UserSetting (*AccessTokensUserSetting_AccessToken)(nil), // 3: slash.store.AccessTokensUserSetting.AccessToken
(*AccessTokensUserSetting)(nil), // 4: slash.store.AccessTokensUserSetting
(*AccessTokensUserSetting_AccessToken)(nil), // 5: slash.store.AccessTokensUserSetting.AccessToken
} }
var file_store_user_setting_proto_depIdxs = []int32{ var file_store_user_setting_proto_depIdxs = []int32{
0, // 0: slash.store.UserSetting.key:type_name -> slash.store.UserSettingKey 0, // 0: slash.store.UserSetting.key:type_name -> slash.store.UserSettingKey
4, // 1: slash.store.UserSetting.access_tokens:type_name -> slash.store.AccessTokensUserSetting 2, // 1: slash.store.UserSetting.access_tokens:type_name -> slash.store.AccessTokensUserSetting
1, // 2: slash.store.UserSetting.locale:type_name -> slash.store.LocaleUserSetting 3, // 2: slash.store.AccessTokensUserSetting.access_tokens:type_name -> slash.store.AccessTokensUserSetting.AccessToken
2, // 3: slash.store.UserSetting.color_theme:type_name -> slash.store.ColorThemeUserSetting 3, // [3:3] is the sub-list for method output_type
5, // 4: slash.store.AccessTokensUserSetting.access_tokens:type_name -> slash.store.AccessTokensUserSetting.AccessToken 3, // [3:3] is the sub-list for method input_type
5, // [5:5] is the sub-list for method output_type 3, // [3:3] is the sub-list for extension type_name
5, // [5:5] is the sub-list for method input_type 3, // [3:3] is the sub-list for extension extendee
5, // [5:5] is the sub-list for extension type_name 0, // [0:3] is the sub-list for field type_name
5, // [5:5] is the sub-list for extension extendee
0, // [0:5] is the sub-list for field type_name
} }
func init() { file_store_user_setting_proto_init() } func init() { file_store_user_setting_proto_init() }
@ -554,7 +427,7 @@ func file_store_user_setting_proto_init() {
File: protoimpl.DescBuilder{ File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_store_user_setting_proto_rawDesc, RawDescriptor: file_store_user_setting_proto_rawDesc,
NumEnums: 3, NumEnums: 1,
NumMessages: 3, NumMessages: 3,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,

View File

@ -12,9 +12,9 @@ message UserSetting {
oneof value { oneof value {
AccessTokensUserSetting access_tokens = 3; AccessTokensUserSetting access_tokens = 3;
LocaleUserSetting locale = 4; string locale = 4;
ColorThemeUserSetting color_theme = 5; string color_theme = 5;
} }
} }
@ -38,18 +38,3 @@ message AccessTokensUserSetting {
} }
repeated AccessToken access_tokens = 1; repeated AccessToken access_tokens = 1;
} }
enum LocaleUserSetting {
LOCALE_USER_SETTING_UNSPECIFIED = 0;
EN = 1;
ZH = 2;
FR = 3;
JA = 4;
}
enum ColorThemeUserSetting {
COLOR_THEME_USER_SETTING_UNSPECIFIED = 0;
SYSTEM = 1;
LIGHT = 2;
DARK = 3;
}

View File

@ -37,7 +37,7 @@ func (s *APIV1Service) UpdateUserSetting(ctx context.Context, request *v1pb.Upda
UserId: user.ID, UserId: user.ID,
Key: storepb.UserSettingKey_LOCALE, Key: storepb.UserSettingKey_LOCALE,
Value: &storepb.UserSetting_Locale{ Value: &storepb.UserSetting_Locale{
Locale: convertUserSettingLocaleToStore(request.UserSetting.Locale), Locale: request.UserSetting.Locale,
}, },
}); err != nil { }); err != nil {
return nil, status.Errorf(codes.Internal, "failed to update user setting: %v", err) return nil, status.Errorf(codes.Internal, "failed to update user setting: %v", err)
@ -47,7 +47,7 @@ func (s *APIV1Service) UpdateUserSetting(ctx context.Context, request *v1pb.Upda
UserId: user.ID, UserId: user.ID,
Key: storepb.UserSettingKey_COLOR_THEME, Key: storepb.UserSettingKey_COLOR_THEME,
Value: &storepb.UserSetting_ColorTheme{ Value: &storepb.UserSetting_ColorTheme{
ColorTheme: convertUserSettingColorThemeToStore(request.UserSetting.ColorTheme), ColorTheme: request.UserSetting.ColorTheme,
}, },
}); err != nil { }); err != nil {
return nil, status.Errorf(codes.Internal, "failed to update user setting: %v", err) return nil, status.Errorf(codes.Internal, "failed to update user setting: %v", err)
@ -76,71 +76,15 @@ func getUserSetting(ctx context.Context, s *store.Store, userID int32) (*v1pb.Us
userSetting := &v1pb.UserSetting{ userSetting := &v1pb.UserSetting{
Id: userID, Id: userID,
Locale: v1pb.UserSetting_LOCALE_EN, Locale: "EN",
ColorTheme: v1pb.UserSetting_COLOR_THEME_SYSTEM, ColorTheme: "SYSTEM",
} }
for _, setting := range userSettings { for _, setting := range userSettings {
if setting.Key == storepb.UserSettingKey_LOCALE { if setting.Key == storepb.UserSettingKey_LOCALE {
userSetting.Locale = convertUserSettingLocaleFromStore(setting.GetLocale()) userSetting.Locale = setting.GetLocale()
} else if setting.Key == storepb.UserSettingKey_COLOR_THEME { } else if setting.Key == storepb.UserSettingKey_COLOR_THEME {
userSetting.ColorTheme = convertUserSettingColorThemeFromStore(setting.GetColorTheme()) userSetting.ColorTheme = setting.GetColorTheme()
} }
} }
return userSetting, nil return userSetting, nil
} }
func convertUserSettingLocaleToStore(locale v1pb.UserSetting_Locale) storepb.LocaleUserSetting {
switch locale {
case v1pb.UserSetting_LOCALE_EN:
return storepb.LocaleUserSetting_EN
case v1pb.UserSetting_LOCALE_ZH:
return storepb.LocaleUserSetting_ZH
case v1pb.UserSetting_LOCALE_FR:
return storepb.LocaleUserSetting_FR
case v1pb.UserSetting_LOCALE_JA:
return storepb.LocaleUserSetting_JA
default:
return storepb.LocaleUserSetting_LOCALE_USER_SETTING_UNSPECIFIED
}
}
func convertUserSettingLocaleFromStore(locale storepb.LocaleUserSetting) v1pb.UserSetting_Locale {
switch locale {
case storepb.LocaleUserSetting_EN:
return v1pb.UserSetting_LOCALE_EN
case storepb.LocaleUserSetting_ZH:
return v1pb.UserSetting_LOCALE_ZH
case storepb.LocaleUserSetting_FR:
return v1pb.UserSetting_LOCALE_FR
case storepb.LocaleUserSetting_JA:
return v1pb.UserSetting_LOCALE_JA
default:
return v1pb.UserSetting_LOCALE_UNSPECIFIED
}
}
func convertUserSettingColorThemeToStore(colorTheme v1pb.UserSetting_ColorTheme) storepb.ColorThemeUserSetting {
switch colorTheme {
case v1pb.UserSetting_COLOR_THEME_SYSTEM:
return storepb.ColorThemeUserSetting_SYSTEM
case v1pb.UserSetting_COLOR_THEME_LIGHT:
return storepb.ColorThemeUserSetting_LIGHT
case v1pb.UserSetting_COLOR_THEME_DARK:
return storepb.ColorThemeUserSetting_DARK
default:
return storepb.ColorThemeUserSetting_COLOR_THEME_USER_SETTING_UNSPECIFIED
}
}
func convertUserSettingColorThemeFromStore(colorTheme storepb.ColorThemeUserSetting) v1pb.UserSetting_ColorTheme {
switch colorTheme {
case storepb.ColorThemeUserSetting_SYSTEM:
return v1pb.UserSetting_COLOR_THEME_SYSTEM
case storepb.ColorThemeUserSetting_LIGHT:
return v1pb.UserSetting_COLOR_THEME_LIGHT
case storepb.ColorThemeUserSetting_DARK:
return v1pb.UserSetting_COLOR_THEME_DARK
default:
return v1pb.UserSetting_COLOR_THEME_UNSPECIFIED
}
}

View File

@ -30,9 +30,9 @@ func (d *DB) UpsertUserSetting(ctx context.Context, upsert *storepb.UserSetting)
} }
valueString = string(valueBytes) valueString = string(valueBytes)
} else if upsert.Key == storepb.UserSettingKey_LOCALE { } else if upsert.Key == storepb.UserSettingKey_LOCALE {
valueString = upsert.GetLocale().String() valueString = upsert.GetLocale()
} else if upsert.Key == storepb.UserSettingKey_COLOR_THEME { } else if upsert.Key == storepb.UserSettingKey_COLOR_THEME {
valueString = upsert.GetColorTheme().String() valueString = upsert.GetColorTheme()
} else { } else {
return nil, errors.New("invalid user setting key") return nil, errors.New("invalid user setting key")
} }
@ -90,11 +90,11 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
} }
} else if userSetting.Key == storepb.UserSettingKey_LOCALE { } else if userSetting.Key == storepb.UserSettingKey_LOCALE {
userSetting.Value = &storepb.UserSetting_Locale{ userSetting.Value = &storepb.UserSetting_Locale{
Locale: storepb.LocaleUserSetting(storepb.LocaleUserSetting_value[valueString]), Locale: valueString,
} }
} else if userSetting.Key == storepb.UserSettingKey_COLOR_THEME { } else if userSetting.Key == storepb.UserSettingKey_COLOR_THEME {
userSetting.Value = &storepb.UserSetting_ColorTheme{ userSetting.Value = &storepb.UserSetting_ColorTheme{
ColorTheme: storepb.ColorThemeUserSetting(storepb.ColorThemeUserSetting_value[valueString]), ColorTheme: valueString,
} }
} else { } else {
// Skip unknown key. // Skip unknown key.

View File

@ -29,9 +29,9 @@ func (d *DB) UpsertUserSetting(ctx context.Context, upsert *storepb.UserSetting)
} }
valueString = string(valueBytes) valueString = string(valueBytes)
} else if upsert.Key == storepb.UserSettingKey_LOCALE { } else if upsert.Key == storepb.UserSettingKey_LOCALE {
valueString = upsert.GetLocale().String() valueString = upsert.GetLocale()
} else if upsert.Key == storepb.UserSettingKey_COLOR_THEME { } else if upsert.Key == storepb.UserSettingKey_COLOR_THEME {
valueString = upsert.GetColorTheme().String() valueString = upsert.GetColorTheme()
} else { } else {
return nil, errors.New("invalid user setting key") return nil, errors.New("invalid user setting key")
} }
@ -89,11 +89,11 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
} }
} else if userSetting.Key == storepb.UserSettingKey_LOCALE { } else if userSetting.Key == storepb.UserSettingKey_LOCALE {
userSetting.Value = &storepb.UserSetting_Locale{ userSetting.Value = &storepb.UserSetting_Locale{
Locale: storepb.LocaleUserSetting(storepb.LocaleUserSetting_value[valueString]), Locale: valueString,
} }
} else if userSetting.Key == storepb.UserSettingKey_COLOR_THEME { } else if userSetting.Key == storepb.UserSettingKey_COLOR_THEME {
userSetting.Value = &storepb.UserSetting_ColorTheme{ userSetting.Value = &storepb.UserSetting_ColorTheme{
ColorTheme: storepb.ColorThemeUserSetting(storepb.ColorThemeUserSetting_value[valueString]), ColorTheme: valueString,
} }
} else { } else {
// Skip unknown key. // Skip unknown key.

View File

@ -79,42 +79,42 @@ func TestUserSettingStore(t *testing.T) {
UserId: user.ID, UserId: user.ID,
Key: storepb.UserSettingKey_LOCALE, Key: storepb.UserSettingKey_LOCALE,
Value: &storepb.UserSetting_Locale{ Value: &storepb.UserSetting_Locale{
Locale: storepb.LocaleUserSetting_ZH, Locale: "ZH",
}, },
}) })
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, localeUserSetting) require.NotNil(t, localeUserSetting)
require.Equal(t, storepb.UserSettingKey_LOCALE, localeUserSetting.Key) require.Equal(t, storepb.UserSettingKey_LOCALE, localeUserSetting.Key)
require.Equal(t, storepb.LocaleUserSetting_ZH, localeUserSetting.GetLocale()) require.Equal(t, "ZH", localeUserSetting.GetLocale())
localeUserSetting, err = ts.UpsertUserSetting(ctx, &storepb.UserSetting{ localeUserSetting, err = ts.UpsertUserSetting(ctx, &storepb.UserSetting{
UserId: user.ID, UserId: user.ID,
Key: storepb.UserSettingKey_LOCALE, Key: storepb.UserSettingKey_LOCALE,
Value: &storepb.UserSetting_Locale{ Value: &storepb.UserSetting_Locale{
Locale: storepb.LocaleUserSetting_EN, Locale: "EN",
}, },
}) })
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, storepb.LocaleUserSetting_EN, localeUserSetting.GetLocale()) require.Equal(t, "EN", localeUserSetting.GetLocale())
// Test for color theme user setting. // Test for color theme user setting.
colorThemeUserSetting, err := ts.UpsertUserSetting(ctx, &storepb.UserSetting{ colorThemeUserSetting, err := ts.UpsertUserSetting(ctx, &storepb.UserSetting{
UserId: user.ID, UserId: user.ID,
Key: storepb.UserSettingKey_COLOR_THEME, Key: storepb.UserSettingKey_COLOR_THEME,
Value: &storepb.UserSetting_ColorTheme{ Value: &storepb.UserSetting_ColorTheme{
ColorTheme: storepb.ColorThemeUserSetting_LIGHT, ColorTheme: "LIGHT",
}, },
}) })
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, colorThemeUserSetting) require.NotNil(t, colorThemeUserSetting)
require.Equal(t, storepb.UserSettingKey_COLOR_THEME, colorThemeUserSetting.Key) require.Equal(t, storepb.UserSettingKey_COLOR_THEME, colorThemeUserSetting.Key)
require.Equal(t, storepb.ColorThemeUserSetting_LIGHT, colorThemeUserSetting.GetColorTheme()) require.Equal(t, "LIGHT", colorThemeUserSetting.GetColorTheme())
colorThemeUserSetting, err = ts.UpsertUserSetting(ctx, &storepb.UserSetting{ colorThemeUserSetting, err = ts.UpsertUserSetting(ctx, &storepb.UserSetting{
UserId: user.ID, UserId: user.ID,
Key: storepb.UserSettingKey_COLOR_THEME, Key: storepb.UserSettingKey_COLOR_THEME,
Value: &storepb.UserSetting_ColorTheme{ Value: &storepb.UserSetting_ColorTheme{
ColorTheme: storepb.ColorThemeUserSetting_DARK, ColorTheme: "DARK",
}, },
}) })
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, storepb.ColorThemeUserSetting_DARK, colorThemeUserSetting.GetColorTheme()) require.Equal(t, "DARK", colorThemeUserSetting.GetColorTheme())
} }