mirror of
https://github.com/aykhans/slash-e.git
synced 2025-04-20 22:07:15 +00:00
refactor: update user setting keys
This commit is contained in:
parent
87deeca110
commit
8010f54747
@ -8,8 +8,8 @@ const PreferenceSection: React.FC = () => {
|
||||
const { t } = useTranslation();
|
||||
const userStore = useUserStore();
|
||||
const userSetting = userStore.getCurrentUserSetting();
|
||||
const language = userSetting.locale;
|
||||
const colorTheme = userSetting.colorTheme;
|
||||
const language = userSetting.general?.locale || "EN";
|
||||
const colorTheme = userSetting.general?.colorTheme || "SYSTEM";
|
||||
|
||||
const languageOptions = [
|
||||
{
|
||||
@ -49,9 +49,12 @@ const PreferenceSection: React.FC = () => {
|
||||
await userStore.updateUserSetting(
|
||||
{
|
||||
...userSetting,
|
||||
general: {
|
||||
...userSetting.general,
|
||||
locale: locale,
|
||||
},
|
||||
} as UserSetting,
|
||||
["locale"],
|
||||
["general"],
|
||||
);
|
||||
};
|
||||
|
||||
@ -59,9 +62,12 @@ const PreferenceSection: React.FC = () => {
|
||||
await userStore.updateUserSetting(
|
||||
{
|
||||
...userSetting,
|
||||
general: {
|
||||
...userSetting.general,
|
||||
colorTheme: colorTheme,
|
||||
},
|
||||
} as UserSetting,
|
||||
["color_theme"],
|
||||
["general"],
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -7,21 +7,21 @@ import zh from "../../locales/zh.json";
|
||||
|
||||
i18n.use(initReactI18next).init({
|
||||
resources: {
|
||||
en: {
|
||||
EN: {
|
||||
translation: en,
|
||||
},
|
||||
zh: {
|
||||
ZH: {
|
||||
translation: zh,
|
||||
},
|
||||
fr: {
|
||||
FR: {
|
||||
translation: fr,
|
||||
},
|
||||
ja: {
|
||||
JA: {
|
||||
translation: ja,
|
||||
},
|
||||
},
|
||||
lng: "en",
|
||||
fallbackLng: "en",
|
||||
lng: "EN",
|
||||
fallbackLng: "EN",
|
||||
});
|
||||
|
||||
export default i18n;
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { useColorScheme } from "@mui/joy";
|
||||
import { isEqual } from "lodash-es";
|
||||
import { useEffect } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Outlet } from "react-router-dom";
|
||||
@ -34,19 +33,11 @@ const Root: React.FC = () => {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isEqual(currentUserSetting.locale, "ZH")) {
|
||||
i18n.changeLanguage("zh");
|
||||
} else if (isEqual(currentUserSetting.locale, "FR")) {
|
||||
i18n.changeLanguage("fr");
|
||||
} else if (isEqual(currentUserSetting.locale, "JA")) {
|
||||
i18n.changeLanguage("ja");
|
||||
} else {
|
||||
i18n.changeLanguage("en");
|
||||
}
|
||||
i18n.changeLanguage(currentUserSetting.general?.locale || "en");
|
||||
|
||||
if (currentUserSetting.colorTheme === "LIGHT") {
|
||||
if (currentUserSetting.general?.colorTheme === "LIGHT") {
|
||||
setMode("light");
|
||||
} else if (currentUserSetting.colorTheme === "DARK") {
|
||||
} else if (currentUserSetting.general?.colorTheme === "DARK") {
|
||||
setMode("dark");
|
||||
} else {
|
||||
setMode("system");
|
||||
|
@ -129,6 +129,11 @@ const useUserStore = create<UserState>()((set, get) => ({
|
||||
updateMask,
|
||||
})
|
||||
).userSetting as UserSetting;
|
||||
console.log("1", {
|
||||
id: userId,
|
||||
userSetting,
|
||||
updateMask,
|
||||
});
|
||||
const userSettingMap = get().userSettingMapById;
|
||||
userSettingMap[userId] = updatedUserSetting;
|
||||
set(userSettingMap);
|
||||
|
@ -28,11 +28,12 @@ message UserSetting {
|
||||
// id is the user id.
|
||||
int32 id = 1;
|
||||
|
||||
// locale is the user locale.
|
||||
string locale = 2;
|
||||
UserSettingGeneral general = 2;
|
||||
}
|
||||
|
||||
// color_theme is the user color theme.
|
||||
string color_theme = 3;
|
||||
message UserSettingGeneral {
|
||||
string locale = 1;
|
||||
string color_theme = 2;
|
||||
}
|
||||
|
||||
message GetUserSettingRequest {
|
||||
|
@ -98,6 +98,7 @@
|
||||
- [UpdateUserSettingRequest](#slash-api-v1-UpdateUserSettingRequest)
|
||||
- [UpdateUserSettingResponse](#slash-api-v1-UpdateUserSettingResponse)
|
||||
- [UserSetting](#slash-api-v1-UserSetting)
|
||||
- [UserSettingGeneral](#slash-api-v1-UserSettingGeneral)
|
||||
|
||||
- [UserSettingService](#slash-api-v1-UserSettingService)
|
||||
|
||||
@ -1323,8 +1324,23 @@
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| id | [int32](#int32) | | id is the user id. |
|
||||
| locale | [string](#string) | | locale is the user locale. |
|
||||
| color_theme | [string](#string) | | color_theme is the user color theme. |
|
||||
| general | [UserSettingGeneral](#slash-api-v1-UserSettingGeneral) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="slash-api-v1-UserSettingGeneral"></a>
|
||||
|
||||
### UserSettingGeneral
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| locale | [string](#string) | | |
|
||||
| color_theme | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
@ -29,10 +29,7 @@ type UserSetting struct {
|
||||
|
||||
// id is the user id.
|
||||
Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
|
||||
// locale is the user locale.
|
||||
Locale string `protobuf:"bytes,2,opt,name=locale,proto3" json:"locale,omitempty"`
|
||||
// color_theme is the user color theme.
|
||||
ColorTheme string `protobuf:"bytes,3,opt,name=color_theme,json=colorTheme,proto3" json:"color_theme,omitempty"`
|
||||
General *UserSettingGeneral `protobuf:"bytes,2,opt,name=general,proto3" json:"general,omitempty"`
|
||||
}
|
||||
|
||||
func (x *UserSetting) Reset() {
|
||||
@ -74,14 +71,62 @@ func (x *UserSetting) GetId() int32 {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *UserSetting) GetLocale() string {
|
||||
func (x *UserSetting) GetGeneral() *UserSettingGeneral {
|
||||
if x != nil {
|
||||
return x.General
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type UserSettingGeneral struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Locale string `protobuf:"bytes,1,opt,name=locale,proto3" json:"locale,omitempty"`
|
||||
ColorTheme string `protobuf:"bytes,2,opt,name=color_theme,json=colorTheme,proto3" json:"color_theme,omitempty"`
|
||||
}
|
||||
|
||||
func (x *UserSettingGeneral) Reset() {
|
||||
*x = UserSettingGeneral{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *UserSettingGeneral) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*UserSettingGeneral) ProtoMessage() {}
|
||||
|
||||
func (x *UserSettingGeneral) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[1]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use UserSettingGeneral.ProtoReflect.Descriptor instead.
|
||||
func (*UserSettingGeneral) Descriptor() ([]byte, []int) {
|
||||
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (x *UserSettingGeneral) GetLocale() string {
|
||||
if x != nil {
|
||||
return x.Locale
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *UserSetting) GetColorTheme() string {
|
||||
func (x *UserSettingGeneral) GetColorTheme() string {
|
||||
if x != nil {
|
||||
return x.ColorTheme
|
||||
}
|
||||
@ -100,7 +145,7 @@ type GetUserSettingRequest struct {
|
||||
func (x *GetUserSettingRequest) Reset() {
|
||||
*x = GetUserSettingRequest{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[1]
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[2]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -113,7 +158,7 @@ func (x *GetUserSettingRequest) String() string {
|
||||
func (*GetUserSettingRequest) ProtoMessage() {}
|
||||
|
||||
func (x *GetUserSettingRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[1]
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[2]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -126,7 +171,7 @@ func (x *GetUserSettingRequest) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use GetUserSettingRequest.ProtoReflect.Descriptor instead.
|
||||
func (*GetUserSettingRequest) Descriptor() ([]byte, []int) {
|
||||
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{1}
|
||||
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{2}
|
||||
}
|
||||
|
||||
func (x *GetUserSettingRequest) GetId() int32 {
|
||||
@ -147,7 +192,7 @@ type GetUserSettingResponse struct {
|
||||
func (x *GetUserSettingResponse) Reset() {
|
||||
*x = GetUserSettingResponse{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[2]
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[3]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -160,7 +205,7 @@ func (x *GetUserSettingResponse) String() string {
|
||||
func (*GetUserSettingResponse) ProtoMessage() {}
|
||||
|
||||
func (x *GetUserSettingResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[2]
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[3]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -173,7 +218,7 @@ func (x *GetUserSettingResponse) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use GetUserSettingResponse.ProtoReflect.Descriptor instead.
|
||||
func (*GetUserSettingResponse) Descriptor() ([]byte, []int) {
|
||||
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{2}
|
||||
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{3}
|
||||
}
|
||||
|
||||
func (x *GetUserSettingResponse) GetUserSetting() *UserSetting {
|
||||
@ -199,7 +244,7 @@ type UpdateUserSettingRequest struct {
|
||||
func (x *UpdateUserSettingRequest) Reset() {
|
||||
*x = UpdateUserSettingRequest{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[3]
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[4]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -212,7 +257,7 @@ func (x *UpdateUserSettingRequest) String() string {
|
||||
func (*UpdateUserSettingRequest) ProtoMessage() {}
|
||||
|
||||
func (x *UpdateUserSettingRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[3]
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[4]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -225,7 +270,7 @@ func (x *UpdateUserSettingRequest) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use UpdateUserSettingRequest.ProtoReflect.Descriptor instead.
|
||||
func (*UpdateUserSettingRequest) Descriptor() ([]byte, []int) {
|
||||
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{3}
|
||||
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{4}
|
||||
}
|
||||
|
||||
func (x *UpdateUserSettingRequest) GetId() int32 {
|
||||
@ -260,7 +305,7 @@ type UpdateUserSettingResponse struct {
|
||||
func (x *UpdateUserSettingResponse) Reset() {
|
||||
*x = UpdateUserSettingResponse{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[4]
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[5]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -273,7 +318,7 @@ func (x *UpdateUserSettingResponse) String() string {
|
||||
func (*UpdateUserSettingResponse) ProtoMessage() {}
|
||||
|
||||
func (x *UpdateUserSettingResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[4]
|
||||
mi := &file_api_v1_user_setting_service_proto_msgTypes[5]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -286,7 +331,7 @@ func (x *UpdateUserSettingResponse) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use UpdateUserSettingResponse.ProtoReflect.Descriptor instead.
|
||||
func (*UpdateUserSettingResponse) Descriptor() ([]byte, []int) {
|
||||
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{4}
|
||||
return file_api_v1_user_setting_service_proto_rawDescGZIP(), []int{5}
|
||||
}
|
||||
|
||||
func (x *UpdateUserSettingResponse) GetUserSetting() *UserSetting {
|
||||
@ -307,70 +352,75 @@ 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,
|
||||
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,
|
||||
0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x56, 0x0a, 0x0b, 0x55, 0x73,
|
||||
0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x59, 0x0a, 0x0b, 0x55, 0x73,
|
||||
0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
|
||||
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63,
|
||||
0x61, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
|
||||
0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x68, 0x65, 0x6d, 0x65,
|
||||
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x68, 0x65,
|
||||
0x6d, 0x65, 0x22, 0x27, 0x0a, 0x15, 0x47, 0x65, 0x74, 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, 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, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64,
|
||||
0x12, 0x3c, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
|
||||
0x18, 0x02, 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, 0x12, 0x3b,
|
||||
0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20,
|
||||
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52,
|
||||
0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x59, 0x0a, 0x19, 0x55,
|
||||
0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x32, 0xd1, 0x02, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53,
|
||||
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x85, 0x01,
|
||||
0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
|
||||
0x12, 0x23, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
|
||||
0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65,
|
||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70,
|
||||
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74,
|
||||
0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0xda, 0x41, 0x02,
|
||||
0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
|
||||
0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74,
|
||||
0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
|
||||
0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x2e, 0x73, 0x6c,
|
||||
0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e,
|
||||
0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74,
|
||||
0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0xda, 0x41,
|
||||
0x18, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x75, 0x70,
|
||||
0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a,
|
||||
0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x32, 0x1b, 0x2f,
|
||||
0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64,
|
||||
0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0xb5, 0x01, 0x0a, 0x10, 0x63,
|
||||
0x6f, 0x6d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42,
|
||||
0x17, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 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,
|
||||
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x67, 0x65, 0x6e,
|
||||
0x65, 0x72, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 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, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x07, 0x67, 0x65,
|
||||
0x6e, 0x65, 0x72, 0x61, 0x6c, 0x22, 0x4d, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74,
|
||||
0x74, 0x69, 0x6e, 0x67, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6c,
|
||||
0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63,
|
||||
0x61, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x68, 0x65,
|
||||
0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x54,
|
||||
0x68, 0x65, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x15, 0x47, 0x65, 0x74, 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, 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, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
|
||||
0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69,
|
||||
0x6e, 0x67, 0x18, 0x02, 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,
|
||||
0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18,
|
||||
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73,
|
||||
0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x59, 0x0a,
|
||||
0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x32, 0xd1, 0x02, 0x0a, 0x12, 0x55, 0x73, 0x65,
|
||||
0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
|
||||
0x85, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69,
|
||||
0x6e, 0x67, 0x12, 0x23, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
|
||||
0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e,
|
||||
0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65,
|
||||
0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0xda,
|
||||
0x41, 0x02, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69,
|
||||
0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73,
|
||||
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61,
|
||||
0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x2e,
|
||||
0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65,
|
||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70,
|
||||
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53,
|
||||
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c,
|
||||
0xda, 0x41, 0x18, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2c,
|
||||
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02,
|
||||
0x2b, 0x3a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x32,
|
||||
0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b,
|
||||
0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0xb5, 0x01, 0x0a,
|
||||
0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
|
||||
0x31, 0x42, 0x17, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 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 (
|
||||
@ -385,29 +435,31 @@ func file_api_v1_user_setting_service_proto_rawDescGZIP() []byte {
|
||||
return file_api_v1_user_setting_service_proto_rawDescData
|
||||
}
|
||||
|
||||
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, 6)
|
||||
var file_api_v1_user_setting_service_proto_goTypes = []any{
|
||||
(*UserSetting)(nil), // 0: slash.api.v1.UserSetting
|
||||
(*GetUserSettingRequest)(nil), // 1: slash.api.v1.GetUserSettingRequest
|
||||
(*GetUserSettingResponse)(nil), // 2: slash.api.v1.GetUserSettingResponse
|
||||
(*UpdateUserSettingRequest)(nil), // 3: slash.api.v1.UpdateUserSettingRequest
|
||||
(*UpdateUserSettingResponse)(nil), // 4: slash.api.v1.UpdateUserSettingResponse
|
||||
(*fieldmaskpb.FieldMask)(nil), // 5: google.protobuf.FieldMask
|
||||
(*UserSettingGeneral)(nil), // 1: slash.api.v1.UserSettingGeneral
|
||||
(*GetUserSettingRequest)(nil), // 2: slash.api.v1.GetUserSettingRequest
|
||||
(*GetUserSettingResponse)(nil), // 3: slash.api.v1.GetUserSettingResponse
|
||||
(*UpdateUserSettingRequest)(nil), // 4: slash.api.v1.UpdateUserSettingRequest
|
||||
(*UpdateUserSettingResponse)(nil), // 5: slash.api.v1.UpdateUserSettingResponse
|
||||
(*fieldmaskpb.FieldMask)(nil), // 6: google.protobuf.FieldMask
|
||||
}
|
||||
var file_api_v1_user_setting_service_proto_depIdxs = []int32{
|
||||
0, // 0: slash.api.v1.GetUserSettingResponse.user_setting:type_name -> slash.api.v1.UserSetting
|
||||
0, // 1: slash.api.v1.UpdateUserSettingRequest.user_setting:type_name -> slash.api.v1.UserSetting
|
||||
5, // 2: slash.api.v1.UpdateUserSettingRequest.update_mask:type_name -> google.protobuf.FieldMask
|
||||
0, // 3: slash.api.v1.UpdateUserSettingResponse.user_setting:type_name -> slash.api.v1.UserSetting
|
||||
1, // 4: slash.api.v1.UserSettingService.GetUserSetting:input_type -> slash.api.v1.GetUserSettingRequest
|
||||
3, // 5: slash.api.v1.UserSettingService.UpdateUserSetting:input_type -> slash.api.v1.UpdateUserSettingRequest
|
||||
2, // 6: slash.api.v1.UserSettingService.GetUserSetting:output_type -> slash.api.v1.GetUserSettingResponse
|
||||
4, // 7: slash.api.v1.UserSettingService.UpdateUserSetting:output_type -> slash.api.v1.UpdateUserSettingResponse
|
||||
6, // [6:8] is the sub-list for method output_type
|
||||
4, // [4:6] is the sub-list for method input_type
|
||||
4, // [4:4] is the sub-list for extension type_name
|
||||
4, // [4:4] is the sub-list for extension extendee
|
||||
0, // [0:4] is the sub-list for field type_name
|
||||
1, // 0: slash.api.v1.UserSetting.general:type_name -> slash.api.v1.UserSettingGeneral
|
||||
0, // 1: slash.api.v1.GetUserSettingResponse.user_setting:type_name -> slash.api.v1.UserSetting
|
||||
0, // 2: slash.api.v1.UpdateUserSettingRequest.user_setting:type_name -> slash.api.v1.UserSetting
|
||||
6, // 3: slash.api.v1.UpdateUserSettingRequest.update_mask:type_name -> google.protobuf.FieldMask
|
||||
0, // 4: slash.api.v1.UpdateUserSettingResponse.user_setting:type_name -> slash.api.v1.UserSetting
|
||||
2, // 5: slash.api.v1.UserSettingService.GetUserSetting:input_type -> slash.api.v1.GetUserSettingRequest
|
||||
4, // 6: slash.api.v1.UserSettingService.UpdateUserSetting:input_type -> slash.api.v1.UpdateUserSettingRequest
|
||||
3, // 7: slash.api.v1.UserSettingService.GetUserSetting:output_type -> slash.api.v1.GetUserSettingResponse
|
||||
5, // 8: slash.api.v1.UserSettingService.UpdateUserSetting:output_type -> slash.api.v1.UpdateUserSettingResponse
|
||||
7, // [7:9] is the sub-list for method output_type
|
||||
5, // [5:7] is the sub-list for method input_type
|
||||
5, // [5:5] is the sub-list for extension 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_api_v1_user_setting_service_proto_init() }
|
||||
@ -429,7 +481,7 @@ func file_api_v1_user_setting_service_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_v1_user_setting_service_proto_msgTypes[1].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*GetUserSettingRequest); i {
|
||||
switch v := v.(*UserSettingGeneral); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@ -441,7 +493,7 @@ func file_api_v1_user_setting_service_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_v1_user_setting_service_proto_msgTypes[2].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*GetUserSettingResponse); i {
|
||||
switch v := v.(*GetUserSettingRequest); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@ -453,7 +505,7 @@ func file_api_v1_user_setting_service_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_v1_user_setting_service_proto_msgTypes[3].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*UpdateUserSettingRequest); i {
|
||||
switch v := v.(*GetUserSettingResponse); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@ -465,6 +517,18 @@ func file_api_v1_user_setting_service_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_v1_user_setting_service_proto_msgTypes[4].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*UpdateUserSettingRequest); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_api_v1_user_setting_service_proto_msgTypes[5].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*UpdateUserSettingResponse); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
@ -483,7 +547,7 @@ func file_api_v1_user_setting_service_proto_init() {
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_api_v1_user_setting_service_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 5,
|
||||
NumMessages: 6,
|
||||
NumExtensions: 0,
|
||||
NumServices: 1,
|
||||
},
|
||||
|
@ -827,12 +827,15 @@ definitions:
|
||||
type: integer
|
||||
format: int32
|
||||
description: id is the user id.
|
||||
general:
|
||||
$ref: '#/definitions/apiv1UserSettingGeneral'
|
||||
apiv1UserSettingGeneral:
|
||||
type: object
|
||||
properties:
|
||||
locale:
|
||||
type: string
|
||||
description: locale is the user locale.
|
||||
colorTheme:
|
||||
type: string
|
||||
description: color_theme is the user color theme.
|
||||
apiv1Visibility:
|
||||
type: string
|
||||
enum:
|
||||
|
@ -19,9 +19,10 @@
|
||||
- [Shortcut](#slash-store-Shortcut)
|
||||
|
||||
- [store/user_setting.proto](#store_user_setting-proto)
|
||||
- [AccessTokensUserSetting](#slash-store-AccessTokensUserSetting)
|
||||
- [AccessTokensUserSetting.AccessToken](#slash-store-AccessTokensUserSetting-AccessToken)
|
||||
- [UserSetting](#slash-store-UserSetting)
|
||||
- [UserSettingAccessTokens](#slash-store-UserSettingAccessTokens)
|
||||
- [UserSettingAccessTokens.AccessToken](#slash-store-UserSettingAccessTokens-AccessToken)
|
||||
- [UserSettingGeneral](#slash-store-UserSettingGeneral)
|
||||
|
||||
- [UserSettingKey](#slash-store-UserSettingKey)
|
||||
|
||||
@ -232,24 +233,42 @@
|
||||
|
||||
|
||||
|
||||
<a name="slash-store-AccessTokensUserSetting"></a>
|
||||
<a name="slash-store-UserSetting"></a>
|
||||
|
||||
### AccessTokensUserSetting
|
||||
### UserSetting
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| access_tokens | [AccessTokensUserSetting.AccessToken](#slash-store-AccessTokensUserSetting-AccessToken) | repeated | |
|
||||
| user_id | [int32](#int32) | | |
|
||||
| key | [UserSettingKey](#slash-store-UserSettingKey) | | |
|
||||
| general | [UserSettingGeneral](#slash-store-UserSettingGeneral) | | |
|
||||
| access_tokens | [UserSettingAccessTokens](#slash-store-UserSettingAccessTokens) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="slash-store-AccessTokensUserSetting-AccessToken"></a>
|
||||
<a name="slash-store-UserSettingAccessTokens"></a>
|
||||
|
||||
### AccessTokensUserSetting.AccessToken
|
||||
### UserSettingAccessTokens
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| access_tokens | [UserSettingAccessTokens.AccessToken](#slash-store-UserSettingAccessTokens-AccessToken) | repeated | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="slash-store-UserSettingAccessTokens-AccessToken"></a>
|
||||
|
||||
### UserSettingAccessTokens.AccessToken
|
||||
|
||||
|
||||
|
||||
@ -263,17 +282,14 @@
|
||||
|
||||
|
||||
|
||||
<a name="slash-store-UserSetting"></a>
|
||||
<a name="slash-store-UserSettingGeneral"></a>
|
||||
|
||||
### UserSetting
|
||||
### UserSettingGeneral
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| user_id | [int32](#int32) | | |
|
||||
| key | [UserSettingKey](#slash-store-UserSettingKey) | | |
|
||||
| access_tokens | [AccessTokensUserSetting](#slash-store-AccessTokensUserSetting) | | |
|
||||
| locale | [string](#string) | | |
|
||||
| color_theme | [string](#string) | | |
|
||||
|
||||
@ -292,9 +308,8 @@
|
||||
| Name | Number | Description |
|
||||
| ---- | ------ | ----------- |
|
||||
| USER_SETTING_KEY_UNSPECIFIED | 0 | |
|
||||
| ACCESS_TOKENS | 1 | Access tokens for the user. |
|
||||
| LOCALE | 2 | Locale for the user. |
|
||||
| COLOR_THEME | 3 | Color theme for the user. |
|
||||
| GENERAL | 1 | General settings for the user. |
|
||||
| ACCESS_TOKENS | 2 | Access tokens for the user. |
|
||||
|
||||
|
||||
|
||||
|
@ -24,27 +24,23 @@ type UserSettingKey int32
|
||||
|
||||
const (
|
||||
UserSettingKey_USER_SETTING_KEY_UNSPECIFIED UserSettingKey = 0
|
||||
// General settings for the user.
|
||||
UserSettingKey_GENERAL UserSettingKey = 1
|
||||
// Access tokens for the user.
|
||||
UserSettingKey_ACCESS_TOKENS UserSettingKey = 1
|
||||
// Locale for the user.
|
||||
UserSettingKey_LOCALE UserSettingKey = 2
|
||||
// Color theme for the user.
|
||||
UserSettingKey_COLOR_THEME UserSettingKey = 3
|
||||
UserSettingKey_ACCESS_TOKENS UserSettingKey = 2
|
||||
)
|
||||
|
||||
// Enum value maps for UserSettingKey.
|
||||
var (
|
||||
UserSettingKey_name = map[int32]string{
|
||||
0: "USER_SETTING_KEY_UNSPECIFIED",
|
||||
1: "ACCESS_TOKENS",
|
||||
2: "LOCALE",
|
||||
3: "COLOR_THEME",
|
||||
1: "GENERAL",
|
||||
2: "ACCESS_TOKENS",
|
||||
}
|
||||
UserSettingKey_value = map[string]int32{
|
||||
"USER_SETTING_KEY_UNSPECIFIED": 0,
|
||||
"ACCESS_TOKENS": 1,
|
||||
"LOCALE": 2,
|
||||
"COLOR_THEME": 3,
|
||||
"GENERAL": 1,
|
||||
"ACCESS_TOKENS": 2,
|
||||
}
|
||||
)
|
||||
|
||||
@ -84,9 +80,8 @@ type UserSetting struct {
|
||||
Key UserSettingKey `protobuf:"varint,2,opt,name=key,proto3,enum=slash.store.UserSettingKey" json:"key,omitempty"`
|
||||
// Types that are assignable to Value:
|
||||
//
|
||||
// *UserSetting_General
|
||||
// *UserSetting_AccessTokens
|
||||
// *UserSetting_Locale
|
||||
// *UserSetting_ColorTheme
|
||||
Value isUserSetting_Value `protobuf_oneof:"value"`
|
||||
}
|
||||
|
||||
@ -143,59 +138,47 @@ func (m *UserSetting) GetValue() isUserSetting_Value {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *UserSetting) GetAccessTokens() *AccessTokensUserSetting {
|
||||
func (x *UserSetting) GetGeneral() *UserSettingGeneral {
|
||||
if x, ok := x.GetValue().(*UserSetting_General); ok {
|
||||
return x.General
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *UserSetting) GetAccessTokens() *UserSettingAccessTokens {
|
||||
if x, ok := x.GetValue().(*UserSetting_AccessTokens); ok {
|
||||
return x.AccessTokens
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *UserSetting) GetLocale() string {
|
||||
if x, ok := x.GetValue().(*UserSetting_Locale); ok {
|
||||
return x.Locale
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *UserSetting) GetColorTheme() string {
|
||||
if x, ok := x.GetValue().(*UserSetting_ColorTheme); ok {
|
||||
return x.ColorTheme
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type isUserSetting_Value interface {
|
||||
isUserSetting_Value()
|
||||
}
|
||||
|
||||
type UserSetting_General struct {
|
||||
General *UserSettingGeneral `protobuf:"bytes,3,opt,name=general,proto3,oneof"`
|
||||
}
|
||||
|
||||
type UserSetting_AccessTokens struct {
|
||||
AccessTokens *AccessTokensUserSetting `protobuf:"bytes,3,opt,name=access_tokens,json=accessTokens,proto3,oneof"`
|
||||
AccessTokens *UserSettingAccessTokens `protobuf:"bytes,4,opt,name=access_tokens,json=accessTokens,proto3,oneof"`
|
||||
}
|
||||
|
||||
type UserSetting_Locale struct {
|
||||
Locale string `protobuf:"bytes,4,opt,name=locale,proto3,oneof"`
|
||||
}
|
||||
|
||||
type UserSetting_ColorTheme struct {
|
||||
ColorTheme string `protobuf:"bytes,5,opt,name=color_theme,json=colorTheme,proto3,oneof"`
|
||||
}
|
||||
func (*UserSetting_General) isUserSetting_Value() {}
|
||||
|
||||
func (*UserSetting_AccessTokens) isUserSetting_Value() {}
|
||||
|
||||
func (*UserSetting_Locale) isUserSetting_Value() {}
|
||||
|
||||
func (*UserSetting_ColorTheme) isUserSetting_Value() {}
|
||||
|
||||
type AccessTokensUserSetting struct {
|
||||
type UserSettingGeneral struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
AccessTokens []*AccessTokensUserSetting_AccessToken `protobuf:"bytes,1,rep,name=access_tokens,json=accessTokens,proto3" json:"access_tokens,omitempty"`
|
||||
Locale string `protobuf:"bytes,1,opt,name=locale,proto3" json:"locale,omitempty"`
|
||||
ColorTheme string `protobuf:"bytes,2,opt,name=color_theme,json=colorTheme,proto3" json:"color_theme,omitempty"`
|
||||
}
|
||||
|
||||
func (x *AccessTokensUserSetting) Reset() {
|
||||
*x = AccessTokensUserSetting{}
|
||||
func (x *UserSettingGeneral) Reset() {
|
||||
*x = UserSettingGeneral{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_store_user_setting_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
@ -203,13 +186,13 @@ func (x *AccessTokensUserSetting) Reset() {
|
||||
}
|
||||
}
|
||||
|
||||
func (x *AccessTokensUserSetting) String() string {
|
||||
func (x *UserSettingGeneral) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*AccessTokensUserSetting) ProtoMessage() {}
|
||||
func (*UserSettingGeneral) ProtoMessage() {}
|
||||
|
||||
func (x *AccessTokensUserSetting) ProtoReflect() protoreflect.Message {
|
||||
func (x *UserSettingGeneral) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_store_user_setting_proto_msgTypes[1]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
@ -221,19 +204,73 @@ func (x *AccessTokensUserSetting) ProtoReflect() protoreflect.Message {
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use AccessTokensUserSetting.ProtoReflect.Descriptor instead.
|
||||
func (*AccessTokensUserSetting) Descriptor() ([]byte, []int) {
|
||||
// Deprecated: Use UserSettingGeneral.ProtoReflect.Descriptor instead.
|
||||
func (*UserSettingGeneral) Descriptor() ([]byte, []int) {
|
||||
return file_store_user_setting_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (x *AccessTokensUserSetting) GetAccessTokens() []*AccessTokensUserSetting_AccessToken {
|
||||
func (x *UserSettingGeneral) GetLocale() string {
|
||||
if x != nil {
|
||||
return x.Locale
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *UserSettingGeneral) GetColorTheme() string {
|
||||
if x != nil {
|
||||
return x.ColorTheme
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type UserSettingAccessTokens struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
AccessTokens []*UserSettingAccessTokens_AccessToken `protobuf:"bytes,1,rep,name=access_tokens,json=accessTokens,proto3" json:"access_tokens,omitempty"`
|
||||
}
|
||||
|
||||
func (x *UserSettingAccessTokens) Reset() {
|
||||
*x = UserSettingAccessTokens{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_store_user_setting_proto_msgTypes[2]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *UserSettingAccessTokens) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*UserSettingAccessTokens) ProtoMessage() {}
|
||||
|
||||
func (x *UserSettingAccessTokens) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_store_user_setting_proto_msgTypes[2]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use UserSettingAccessTokens.ProtoReflect.Descriptor instead.
|
||||
func (*UserSettingAccessTokens) Descriptor() ([]byte, []int) {
|
||||
return file_store_user_setting_proto_rawDescGZIP(), []int{2}
|
||||
}
|
||||
|
||||
func (x *UserSettingAccessTokens) GetAccessTokens() []*UserSettingAccessTokens_AccessToken {
|
||||
if x != nil {
|
||||
return x.AccessTokens
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type AccessTokensUserSetting_AccessToken struct {
|
||||
type UserSettingAccessTokens_AccessToken struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
@ -245,23 +282,23 @@ type AccessTokensUserSetting_AccessToken struct {
|
||||
Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
|
||||
}
|
||||
|
||||
func (x *AccessTokensUserSetting_AccessToken) Reset() {
|
||||
*x = AccessTokensUserSetting_AccessToken{}
|
||||
func (x *UserSettingAccessTokens_AccessToken) Reset() {
|
||||
*x = UserSettingAccessTokens_AccessToken{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_store_user_setting_proto_msgTypes[2]
|
||||
mi := &file_store_user_setting_proto_msgTypes[3]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *AccessTokensUserSetting_AccessToken) String() string {
|
||||
func (x *UserSettingAccessTokens_AccessToken) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*AccessTokensUserSetting_AccessToken) ProtoMessage() {}
|
||||
func (*UserSettingAccessTokens_AccessToken) ProtoMessage() {}
|
||||
|
||||
func (x *AccessTokensUserSetting_AccessToken) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_store_user_setting_proto_msgTypes[2]
|
||||
func (x *UserSettingAccessTokens_AccessToken) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_store_user_setting_proto_msgTypes[3]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -272,19 +309,19 @@ func (x *AccessTokensUserSetting_AccessToken) ProtoReflect() protoreflect.Messag
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use AccessTokensUserSetting_AccessToken.ProtoReflect.Descriptor instead.
|
||||
func (*AccessTokensUserSetting_AccessToken) Descriptor() ([]byte, []int) {
|
||||
return file_store_user_setting_proto_rawDescGZIP(), []int{1, 0}
|
||||
// Deprecated: Use UserSettingAccessTokens_AccessToken.ProtoReflect.Descriptor instead.
|
||||
func (*UserSettingAccessTokens_AccessToken) Descriptor() ([]byte, []int) {
|
||||
return file_store_user_setting_proto_rawDescGZIP(), []int{2, 0}
|
||||
}
|
||||
|
||||
func (x *AccessTokensUserSetting_AccessToken) GetAccessToken() string {
|
||||
func (x *UserSettingAccessTokens_AccessToken) GetAccessToken() string {
|
||||
if x != nil {
|
||||
return x.AccessToken
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *AccessTokensUserSetting_AccessToken) GetDescription() string {
|
||||
func (x *UserSettingAccessTokens_AccessToken) GetDescription() string {
|
||||
if x != nil {
|
||||
return x.Description
|
||||
}
|
||||
@ -302,45 +339,49 @@ var file_store_user_setting_proto_rawDesc = []byte{
|
||||
0x12, 0x2d, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e,
|
||||
0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72,
|
||||
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
|
||||
0x4b, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 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,
|
||||
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, 0x18, 0x0a, 0x06,
|
||||
0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06,
|
||||
0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f,
|
||||
0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x63,
|
||||
0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c,
|
||||
0x75, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x17, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b,
|
||||
0x65, 0x6e, 0x73, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x55,
|
||||
0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18,
|
||||
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 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, 0x2e, 0x41, 0x63, 0x63, 0x65,
|
||||
0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54,
|
||||
0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x1a, 0x52, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54,
|
||||
0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74,
|
||||
0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65,
|
||||
0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
|
||||
0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
|
||||
0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x62, 0x0a, 0x0e, 0x55, 0x73, 0x65,
|
||||
0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x1c, 0x55,
|
||||
0x53, 0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4b, 0x45, 0x59, 0x5f,
|
||||
0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a,
|
||||
0x0d, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x53, 0x10, 0x01,
|
||||
0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b,
|
||||
0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 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,
|
||||
0x3b, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x1f, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x55,
|
||||
0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61,
|
||||
0x6c, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x4b, 0x0a, 0x0d,
|
||||
0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20,
|
||||
0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72,
|
||||
0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63,
|
||||
0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x63, 0x63,
|
||||
0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c,
|
||||
0x75, 0x65, 0x22, 0x4d, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
|
||||
0x67, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61,
|
||||
0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65,
|
||||
0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x68, 0x65, 0x6d,
|
||||
0x65, 0x22, 0xc4, 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
|
||||
0x67, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x55, 0x0a,
|
||||
0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01,
|
||||
0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f,
|
||||
0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x63,
|
||||
0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73,
|
||||
0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f,
|
||||
0x6b, 0x65, 0x6e, 0x73, 0x1a, 0x52, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f,
|
||||
0x6b, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f,
|
||||
0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73,
|
||||
0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
|
||||
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
|
||||
0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x52, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72,
|
||||
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x1c, 0x55, 0x53,
|
||||
0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x55,
|
||||
0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07,
|
||||
0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x43, 0x43,
|
||||
0x45, 0x53, 0x53, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x53, 0x10, 0x02, 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 (
|
||||
@ -356,22 +397,24 @@ func file_store_user_setting_proto_rawDescGZIP() []byte {
|
||||
}
|
||||
|
||||
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, 4)
|
||||
var file_store_user_setting_proto_goTypes = []any{
|
||||
(UserSettingKey)(0), // 0: slash.store.UserSettingKey
|
||||
(*UserSetting)(nil), // 1: slash.store.UserSetting
|
||||
(*AccessTokensUserSetting)(nil), // 2: slash.store.AccessTokensUserSetting
|
||||
(*AccessTokensUserSetting_AccessToken)(nil), // 3: slash.store.AccessTokensUserSetting.AccessToken
|
||||
(*UserSettingGeneral)(nil), // 2: slash.store.UserSettingGeneral
|
||||
(*UserSettingAccessTokens)(nil), // 3: slash.store.UserSettingAccessTokens
|
||||
(*UserSettingAccessTokens_AccessToken)(nil), // 4: slash.store.UserSettingAccessTokens.AccessToken
|
||||
}
|
||||
var file_store_user_setting_proto_depIdxs = []int32{
|
||||
0, // 0: slash.store.UserSetting.key:type_name -> slash.store.UserSettingKey
|
||||
2, // 1: slash.store.UserSetting.access_tokens:type_name -> slash.store.AccessTokensUserSetting
|
||||
3, // 2: slash.store.AccessTokensUserSetting.access_tokens:type_name -> slash.store.AccessTokensUserSetting.AccessToken
|
||||
3, // [3:3] is the sub-list for method output_type
|
||||
3, // [3:3] is the sub-list for method input_type
|
||||
3, // [3:3] is the sub-list for extension type_name
|
||||
3, // [3:3] is the sub-list for extension extendee
|
||||
0, // [0:3] is the sub-list for field type_name
|
||||
2, // 1: slash.store.UserSetting.general:type_name -> slash.store.UserSettingGeneral
|
||||
3, // 2: slash.store.UserSetting.access_tokens:type_name -> slash.store.UserSettingAccessTokens
|
||||
4, // 3: slash.store.UserSettingAccessTokens.access_tokens:type_name -> slash.store.UserSettingAccessTokens.AccessToken
|
||||
4, // [4:4] is the sub-list for method output_type
|
||||
4, // [4:4] is the sub-list for method input_type
|
||||
4, // [4:4] is the sub-list for extension type_name
|
||||
4, // [4:4] is the sub-list for extension extendee
|
||||
0, // [0:4] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_store_user_setting_proto_init() }
|
||||
@ -393,7 +436,7 @@ func file_store_user_setting_proto_init() {
|
||||
}
|
||||
}
|
||||
file_store_user_setting_proto_msgTypes[1].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*AccessTokensUserSetting); i {
|
||||
switch v := v.(*UserSettingGeneral); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@ -405,7 +448,19 @@ func file_store_user_setting_proto_init() {
|
||||
}
|
||||
}
|
||||
file_store_user_setting_proto_msgTypes[2].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*AccessTokensUserSetting_AccessToken); i {
|
||||
switch v := v.(*UserSettingAccessTokens); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_store_user_setting_proto_msgTypes[3].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*UserSettingAccessTokens_AccessToken); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@ -418,9 +473,8 @@ func file_store_user_setting_proto_init() {
|
||||
}
|
||||
}
|
||||
file_store_user_setting_proto_msgTypes[0].OneofWrappers = []any{
|
||||
(*UserSetting_General)(nil),
|
||||
(*UserSetting_AccessTokens)(nil),
|
||||
(*UserSetting_Locale)(nil),
|
||||
(*UserSetting_ColorTheme)(nil),
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
@ -428,7 +482,7 @@ func file_store_user_setting_proto_init() {
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_store_user_setting_proto_rawDesc,
|
||||
NumEnums: 1,
|
||||
NumMessages: 3,
|
||||
NumMessages: 4,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
|
@ -10,25 +10,26 @@ message UserSetting {
|
||||
UserSettingKey key = 2;
|
||||
|
||||
oneof value {
|
||||
AccessTokensUserSetting access_tokens = 3;
|
||||
UserSettingGeneral general = 3;
|
||||
|
||||
string locale = 4;
|
||||
|
||||
string color_theme = 5;
|
||||
UserSettingAccessTokens access_tokens = 4;
|
||||
}
|
||||
}
|
||||
|
||||
enum UserSettingKey {
|
||||
USER_SETTING_KEY_UNSPECIFIED = 0;
|
||||
// General settings for the user.
|
||||
GENERAL = 1;
|
||||
// Access tokens for the user.
|
||||
ACCESS_TOKENS = 1;
|
||||
// Locale for the user.
|
||||
LOCALE = 2;
|
||||
// Color theme for the user.
|
||||
COLOR_THEME = 3;
|
||||
ACCESS_TOKENS = 2;
|
||||
}
|
||||
|
||||
message AccessTokensUserSetting {
|
||||
message UserSettingGeneral {
|
||||
string locale = 1;
|
||||
string color_theme = 2;
|
||||
}
|
||||
|
||||
message UserSettingAccessTokens {
|
||||
message AccessToken {
|
||||
// The access token is a JWT token.
|
||||
// Including expiration time, issuer, etc.
|
||||
|
@ -163,7 +163,7 @@ func audienceContains(audience jwt.ClaimStrings, token string) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func validateAccessToken(accessTokenString string, userAccessTokens []*storepb.AccessTokensUserSetting_AccessToken) bool {
|
||||
func validateAccessToken(accessTokenString string, userAccessTokens []*storepb.UserSettingAccessTokens_AccessToken) bool {
|
||||
for _, userAccessToken := range userAccessTokens {
|
||||
if accessTokenString == userAccessToken.AccessToken {
|
||||
return true
|
||||
|
@ -251,7 +251,7 @@ func (s *APIV1Service) DeleteUserAccessToken(ctx context.Context, request *v1pb.
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "failed to list access tokens: %v", err)
|
||||
}
|
||||
updatedUserAccessTokens := []*storepb.AccessTokensUserSetting_AccessToken{}
|
||||
updatedUserAccessTokens := []*storepb.UserSettingAccessTokens_AccessToken{}
|
||||
for _, userAccessToken := range userAccessTokens {
|
||||
if userAccessToken.AccessToken == request.AccessToken {
|
||||
continue
|
||||
@ -262,7 +262,7 @@ func (s *APIV1Service) DeleteUserAccessToken(ctx context.Context, request *v1pb.
|
||||
UserId: user.ID,
|
||||
Key: storepb.UserSettingKey_ACCESS_TOKENS,
|
||||
Value: &storepb.UserSetting_AccessTokens{
|
||||
AccessTokens: &storepb.AccessTokensUserSetting{
|
||||
AccessTokens: &storepb.UserSettingAccessTokens{
|
||||
AccessTokens: updatedUserAccessTokens,
|
||||
},
|
||||
},
|
||||
@ -278,7 +278,7 @@ func (s *APIV1Service) UpsertAccessTokenToStore(ctx context.Context, user *store
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to get user access tokens")
|
||||
}
|
||||
userAccessToken := storepb.AccessTokensUserSetting_AccessToken{
|
||||
userAccessToken := storepb.UserSettingAccessTokens_AccessToken{
|
||||
AccessToken: accessToken,
|
||||
Description: description,
|
||||
}
|
||||
@ -287,7 +287,7 @@ func (s *APIV1Service) UpsertAccessTokenToStore(ctx context.Context, user *store
|
||||
UserId: user.ID,
|
||||
Key: storepb.UserSettingKey_ACCESS_TOKENS,
|
||||
Value: &storepb.UserSetting_AccessTokens{
|
||||
AccessTokens: &storepb.AccessTokensUserSetting{
|
||||
AccessTokens: &storepb.UserSettingAccessTokens{
|
||||
AccessTokens: userAccessTokens,
|
||||
},
|
||||
},
|
||||
|
@ -32,22 +32,15 @@ func (s *APIV1Service) UpdateUserSetting(ctx context.Context, request *v1pb.Upda
|
||||
return nil, status.Errorf(codes.Unauthenticated, "failed to get current user: %v", err)
|
||||
}
|
||||
for _, path := range request.UpdateMask.Paths {
|
||||
if path == "locale" {
|
||||
if path == "general" {
|
||||
if _, err := s.Store.UpsertUserSetting(ctx, &storepb.UserSetting{
|
||||
UserId: user.ID,
|
||||
Key: storepb.UserSettingKey_LOCALE,
|
||||
Value: &storepb.UserSetting_Locale{
|
||||
Locale: request.UserSetting.Locale,
|
||||
Key: storepb.UserSettingKey_GENERAL,
|
||||
Value: &storepb.UserSetting_General{
|
||||
General: &storepb.UserSettingGeneral{
|
||||
Locale: request.UserSetting.General.Locale,
|
||||
ColorTheme: request.UserSetting.General.ColorTheme,
|
||||
},
|
||||
}); err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "failed to update user setting: %v", err)
|
||||
}
|
||||
} else if path == "color_theme" {
|
||||
if _, err := s.Store.UpsertUserSetting(ctx, &storepb.UserSetting{
|
||||
UserId: user.ID,
|
||||
Key: storepb.UserSettingKey_COLOR_THEME,
|
||||
Value: &storepb.UserSetting_ColorTheme{
|
||||
ColorTheme: request.UserSetting.ColorTheme,
|
||||
},
|
||||
}); err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "failed to update user setting: %v", err)
|
||||
@ -76,14 +69,17 @@ func getUserSetting(ctx context.Context, s *store.Store, userID int32) (*v1pb.Us
|
||||
|
||||
userSetting := &v1pb.UserSetting{
|
||||
Id: userID,
|
||||
General: &v1pb.UserSettingGeneral{
|
||||
Locale: "EN",
|
||||
ColorTheme: "SYSTEM",
|
||||
},
|
||||
}
|
||||
for _, setting := range userSettings {
|
||||
if setting.Key == storepb.UserSettingKey_LOCALE {
|
||||
userSetting.Locale = setting.GetLocale()
|
||||
} else if setting.Key == storepb.UserSettingKey_COLOR_THEME {
|
||||
userSetting.ColorTheme = setting.GetColorTheme()
|
||||
if setting.Key == storepb.UserSettingKey_GENERAL {
|
||||
userSetting.General = &v1pb.UserSettingGeneral{
|
||||
Locale: setting.GetGeneral().Locale,
|
||||
ColorTheme: setting.GetGeneral().ColorTheme,
|
||||
}
|
||||
}
|
||||
}
|
||||
return userSetting, nil
|
||||
|
@ -29,10 +29,12 @@ func (d *DB) UpsertUserSetting(ctx context.Context, upsert *storepb.UserSetting)
|
||||
return nil, err
|
||||
}
|
||||
valueString = string(valueBytes)
|
||||
} else if upsert.Key == storepb.UserSettingKey_LOCALE {
|
||||
valueString = upsert.GetLocale()
|
||||
} else if upsert.Key == storepb.UserSettingKey_COLOR_THEME {
|
||||
valueString = upsert.GetColorTheme()
|
||||
} else if upsert.Key == storepb.UserSettingKey_GENERAL {
|
||||
valueBytes, err := protojson.Marshal(upsert.GetGeneral())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
valueString = string(valueBytes)
|
||||
} else {
|
||||
return nil, errors.New("invalid user setting key")
|
||||
}
|
||||
@ -81,20 +83,20 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
|
||||
}
|
||||
userSetting.Key = storepb.UserSettingKey(storepb.UserSettingKey_value[keyString])
|
||||
if userSetting.Key == storepb.UserSettingKey_ACCESS_TOKENS {
|
||||
accessTokensUserSetting := &storepb.AccessTokensUserSetting{}
|
||||
if err := protojson.Unmarshal([]byte(valueString), accessTokensUserSetting); err != nil {
|
||||
userSettingAccessTokens := &storepb.UserSettingAccessTokens{}
|
||||
if err := protojson.Unmarshal([]byte(valueString), userSettingAccessTokens); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
userSetting.Value = &storepb.UserSetting_AccessTokens{
|
||||
AccessTokens: accessTokensUserSetting,
|
||||
AccessTokens: userSettingAccessTokens,
|
||||
}
|
||||
} else if userSetting.Key == storepb.UserSettingKey_LOCALE {
|
||||
userSetting.Value = &storepb.UserSetting_Locale{
|
||||
Locale: valueString,
|
||||
} else if userSetting.Key == storepb.UserSettingKey_GENERAL {
|
||||
userSettingGeneral := &storepb.UserSettingGeneral{}
|
||||
if err := protojson.Unmarshal([]byte(valueString), userSettingGeneral); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else if userSetting.Key == storepb.UserSettingKey_COLOR_THEME {
|
||||
userSetting.Value = &storepb.UserSetting_ColorTheme{
|
||||
ColorTheme: valueString,
|
||||
userSetting.Value = &storepb.UserSetting_General{
|
||||
General: userSettingGeneral,
|
||||
}
|
||||
} else {
|
||||
// Skip unknown key.
|
||||
|
@ -28,10 +28,12 @@ func (d *DB) UpsertUserSetting(ctx context.Context, upsert *storepb.UserSetting)
|
||||
return nil, err
|
||||
}
|
||||
valueString = string(valueBytes)
|
||||
} else if upsert.Key == storepb.UserSettingKey_LOCALE {
|
||||
valueString = upsert.GetLocale()
|
||||
} else if upsert.Key == storepb.UserSettingKey_COLOR_THEME {
|
||||
valueString = upsert.GetColorTheme()
|
||||
} else if upsert.Key == storepb.UserSettingKey_GENERAL {
|
||||
valueBytes, err := protojson.Marshal(upsert.GetGeneral())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
valueString = string(valueBytes)
|
||||
} else {
|
||||
return nil, errors.New("invalid user setting key")
|
||||
}
|
||||
@ -80,20 +82,20 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
|
||||
}
|
||||
userSetting.Key = storepb.UserSettingKey(storepb.UserSettingKey_value[keyString])
|
||||
if userSetting.Key == storepb.UserSettingKey_ACCESS_TOKENS {
|
||||
accessTokensUserSetting := &storepb.AccessTokensUserSetting{}
|
||||
if err := protojson.Unmarshal([]byte(valueString), accessTokensUserSetting); err != nil {
|
||||
userSettingAccessTokens := &storepb.UserSettingAccessTokens{}
|
||||
if err := protojson.Unmarshal([]byte(valueString), userSettingAccessTokens); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
userSetting.Value = &storepb.UserSetting_AccessTokens{
|
||||
AccessTokens: accessTokensUserSetting,
|
||||
AccessTokens: userSettingAccessTokens,
|
||||
}
|
||||
} else if userSetting.Key == storepb.UserSettingKey_LOCALE {
|
||||
userSetting.Value = &storepb.UserSetting_Locale{
|
||||
Locale: valueString,
|
||||
} else if userSetting.Key == storepb.UserSettingKey_GENERAL {
|
||||
userSettingGeneral := &storepb.UserSettingGeneral{}
|
||||
if err := protojson.Unmarshal([]byte(valueString), userSettingGeneral); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else if userSetting.Key == storepb.UserSettingKey_COLOR_THEME {
|
||||
userSetting.Value = &storepb.UserSetting_ColorTheme{
|
||||
ColorTheme: valueString,
|
||||
userSetting.Value = &storepb.UserSetting_General{
|
||||
General: userSettingGeneral,
|
||||
}
|
||||
} else {
|
||||
// Skip unknown key.
|
||||
|
@ -54,7 +54,7 @@ func (s *Store) GetUserSetting(ctx context.Context, find *FindUserSetting) (*sto
|
||||
}
|
||||
|
||||
// GetUserAccessTokens returns the access tokens of the user.
|
||||
func (s *Store) GetUserAccessTokens(ctx context.Context, userID int32) ([]*storepb.AccessTokensUserSetting_AccessToken, error) {
|
||||
func (s *Store) GetUserAccessTokens(ctx context.Context, userID int32) ([]*storepb.UserSettingAccessTokens_AccessToken, error) {
|
||||
userSetting, err := s.GetUserSetting(ctx, &FindUserSetting{
|
||||
UserID: &userID,
|
||||
Key: storepb.UserSettingKey_ACCESS_TOKENS,
|
||||
@ -63,7 +63,7 @@ func (s *Store) GetUserAccessTokens(ctx context.Context, userID int32) ([]*store
|
||||
return nil, err
|
||||
}
|
||||
if userSetting == nil {
|
||||
return []*storepb.AccessTokensUserSetting_AccessToken{}, nil
|
||||
return []*storepb.UserSettingAccessTokens_AccessToken{}, nil
|
||||
}
|
||||
|
||||
accessTokensUserSetting := userSetting.GetAccessTokens()
|
||||
|
@ -26,8 +26,8 @@ func TestUserSettingStore(t *testing.T) {
|
||||
UserId: user.ID,
|
||||
Key: storepb.UserSettingKey_ACCESS_TOKENS,
|
||||
Value: &storepb.UserSetting_AccessTokens{
|
||||
AccessTokens: &storepb.AccessTokensUserSetting{
|
||||
AccessTokens: []*storepb.AccessTokensUserSetting_AccessToken{
|
||||
AccessTokens: &storepb.UserSettingAccessTokens{
|
||||
AccessTokens: []*storepb.UserSettingAccessTokens_AccessToken{
|
||||
{
|
||||
AccessToken: "test_access_token",
|
||||
},
|
||||
@ -58,8 +58,8 @@ func TestUserSettingStore(t *testing.T) {
|
||||
UserId: user.ID,
|
||||
Key: storepb.UserSettingKey_ACCESS_TOKENS,
|
||||
Value: &storepb.UserSetting_AccessTokens{
|
||||
AccessTokens: &storepb.AccessTokensUserSetting{
|
||||
AccessTokens: []*storepb.AccessTokensUserSetting_AccessToken{
|
||||
AccessTokens: &storepb.UserSettingAccessTokens{
|
||||
AccessTokens: []*storepb.UserSettingAccessTokens_AccessToken{
|
||||
{
|
||||
AccessToken: "test_access_token",
|
||||
},
|
||||
@ -74,47 +74,33 @@ func TestUserSettingStore(t *testing.T) {
|
||||
require.NotNil(t, accessTokensUserSetting)
|
||||
require.Equal(t, 2, len(accessTokensUserSetting.GetAccessTokens().AccessTokens))
|
||||
|
||||
// Test for locale user setting.
|
||||
localeUserSetting, err := ts.UpsertUserSetting(ctx, &storepb.UserSetting{
|
||||
// Test for user setting general.
|
||||
userSettingGeneral, err := ts.UpsertUserSetting(ctx, &storepb.UserSetting{
|
||||
UserId: user.ID,
|
||||
Key: storepb.UserSettingKey_LOCALE,
|
||||
Value: &storepb.UserSetting_Locale{
|
||||
Key: storepb.UserSettingKey_GENERAL,
|
||||
Value: &storepb.UserSetting_General{
|
||||
General: &storepb.UserSettingGeneral{
|
||||
Locale: "ZH",
|
||||
ColorTheme: "SYSTEM",
|
||||
},
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, localeUserSetting)
|
||||
require.Equal(t, storepb.UserSettingKey_LOCALE, localeUserSetting.Key)
|
||||
require.Equal(t, "ZH", localeUserSetting.GetLocale())
|
||||
localeUserSetting, err = ts.UpsertUserSetting(ctx, &storepb.UserSetting{
|
||||
require.NotNil(t, userSettingGeneral)
|
||||
require.Equal(t, storepb.UserSettingKey_GENERAL, userSettingGeneral.Key)
|
||||
require.Equal(t, "ZH", userSettingGeneral.GetGeneral().Locale)
|
||||
require.Equal(t, "SYSTEM", userSettingGeneral.GetGeneral().ColorTheme)
|
||||
userSettingGeneral, err = ts.UpsertUserSetting(ctx, &storepb.UserSetting{
|
||||
UserId: user.ID,
|
||||
Key: storepb.UserSettingKey_LOCALE,
|
||||
Value: &storepb.UserSetting_Locale{
|
||||
Key: storepb.UserSettingKey_GENERAL,
|
||||
Value: &storepb.UserSetting_General{
|
||||
General: &storepb.UserSettingGeneral{
|
||||
Locale: "EN",
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "EN", localeUserSetting.GetLocale())
|
||||
|
||||
// Test for color theme user setting.
|
||||
colorThemeUserSetting, err := ts.UpsertUserSetting(ctx, &storepb.UserSetting{
|
||||
UserId: user.ID,
|
||||
Key: storepb.UserSettingKey_COLOR_THEME,
|
||||
Value: &storepb.UserSetting_ColorTheme{
|
||||
ColorTheme: "LIGHT",
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, colorThemeUserSetting)
|
||||
require.Equal(t, storepb.UserSettingKey_COLOR_THEME, colorThemeUserSetting.Key)
|
||||
require.Equal(t, "LIGHT", colorThemeUserSetting.GetColorTheme())
|
||||
colorThemeUserSetting, err = ts.UpsertUserSetting(ctx, &storepb.UserSetting{
|
||||
UserId: user.ID,
|
||||
Key: storepb.UserSettingKey_COLOR_THEME,
|
||||
Value: &storepb.UserSetting_ColorTheme{
|
||||
ColorTheme: "DARK",
|
||||
},
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "DARK", colorThemeUserSetting.GetColorTheme())
|
||||
require.Equal(t, "EN", userSettingGeneral.GetGeneral().Locale)
|
||||
require.Equal(t, "DARK", userSettingGeneral.GetGeneral().ColorTheme)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user