Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
e6e46049
Commit
e6e46049
authored
Jun 23, 2025
by
Johnny
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor: general user setting
parent
9b159368
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
443 additions
and
402 deletions
+443
-402
user_setting.pb.go
proto/gen/store/user_setting.pb.go
+303
-282
user_setting.proto
proto/store/user_setting.proto
+46
-41
shortcut_service.go
server/router/api/v1/shortcut_service.go
+6
-6
user_service.go
server/router/api/v1/user_service.go
+53
-39
user_setting.go
store/db/mysql/user_setting.go
+2
-2
user_setting.go
store/db/postgres/user_setting.go
+2
-2
user_setting.go
store/db/sqlite/user_setting.go
+2
-2
user_setting_test.go
store/test/user_setting_test.go
+2
-2
user_setting.go
store/user_setting.go
+27
-26
No files found.
proto/gen/store/user_setting.pb.go
View file @
e6e46049
...
@@ -22,85 +22,75 @@ const (
...
@@ -22,85 +22,75 @@ const (
_
=
protoimpl
.
EnforceVersion
(
protoimpl
.
MaxVersion
-
20
)
_
=
protoimpl
.
EnforceVersion
(
protoimpl
.
MaxVersion
-
20
)
)
)
type
UserSettingKey
int32
type
UserSetting
_
Key
int32
const
(
const
(
UserSettingKey_USER_SETTING_KEY_UNSPECIFIED
UserSettingKey
=
0
UserSetting_KEY_UNSPECIFIED
UserSetting_Key
=
0
// General user settings.
UserSetting_GENERAL
UserSetting_Key
=
1
// User authentication sessions.
UserSetting_SESSIONS
UserSetting_Key
=
2
// Access tokens for the user.
// Access tokens for the user.
UserSettingKey_ACCESS_TOKENS
UserSettingKey
=
1
UserSetting_ACCESS_TOKENS
UserSetting_Key
=
3
// The locale of the user.
UserSettingKey_LOCALE
UserSettingKey
=
2
// The appearance of the user.
UserSettingKey_APPEARANCE
UserSettingKey
=
3
// The visibility of the memo.
UserSettingKey_MEMO_VISIBILITY
UserSettingKey
=
4
// The shortcuts of the user.
// The shortcuts of the user.
UserSettingKey_SHORTCUTS
UserSettingKey
=
5
UserSetting_SHORTCUTS
UserSetting_Key
=
4
// User authentication sessions.
UserSettingKey_SESSIONS
UserSettingKey
=
6
)
)
// Enum value maps for UserSettingKey.
// Enum value maps for UserSetting
_
Key.
var
(
var
(
UserSettingKey_name
=
map
[
int32
]
string
{
UserSetting_Key_name
=
map
[
int32
]
string
{
0
:
"USER_SETTING_KEY_UNSPECIFIED"
,
0
:
"KEY_UNSPECIFIED"
,
1
:
"ACCESS_TOKENS"
,
1
:
"GENERAL"
,
2
:
"LOCALE"
,
2
:
"SESSIONS"
,
3
:
"APPEARANCE"
,
3
:
"ACCESS_TOKENS"
,
4
:
"MEMO_VISIBILITY"
,
4
:
"SHORTCUTS"
,
5
:
"SHORTCUTS"
,
}
6
:
"SESSIONS"
,
UserSetting_Key_value
=
map
[
string
]
int32
{
}
"KEY_UNSPECIFIED"
:
0
,
UserSettingKey_value
=
map
[
string
]
int32
{
"GENERAL"
:
1
,
"USER_SETTING_KEY_UNSPECIFIED"
:
0
,
"SESSIONS"
:
2
,
"ACCESS_TOKENS"
:
1
,
"ACCESS_TOKENS"
:
3
,
"LOCALE"
:
2
,
"SHORTCUTS"
:
4
,
"APPEARANCE"
:
3
,
"MEMO_VISIBILITY"
:
4
,
"SHORTCUTS"
:
5
,
"SESSIONS"
:
6
,
}
}
)
)
func
(
x
UserSetting
Key
)
Enum
()
*
UserSetting
Key
{
func
(
x
UserSetting
_Key
)
Enum
()
*
UserSetting_
Key
{
p
:=
new
(
UserSettingKey
)
p
:=
new
(
UserSetting
_
Key
)
*
p
=
x
*
p
=
x
return
p
return
p
}
}
func
(
x
UserSettingKey
)
String
()
string
{
func
(
x
UserSetting
_
Key
)
String
()
string
{
return
protoimpl
.
X
.
EnumStringOf
(
x
.
Descriptor
(),
protoreflect
.
EnumNumber
(
x
))
return
protoimpl
.
X
.
EnumStringOf
(
x
.
Descriptor
(),
protoreflect
.
EnumNumber
(
x
))
}
}
func
(
UserSettingKey
)
Descriptor
()
protoreflect
.
EnumDescriptor
{
func
(
UserSetting
_
Key
)
Descriptor
()
protoreflect
.
EnumDescriptor
{
return
file_store_user_setting_proto_enumTypes
[
0
]
.
Descriptor
()
return
file_store_user_setting_proto_enumTypes
[
0
]
.
Descriptor
()
}
}
func
(
UserSettingKey
)
Type
()
protoreflect
.
EnumType
{
func
(
UserSetting
_
Key
)
Type
()
protoreflect
.
EnumType
{
return
&
file_store_user_setting_proto_enumTypes
[
0
]
return
&
file_store_user_setting_proto_enumTypes
[
0
]
}
}
func
(
x
UserSettingKey
)
Number
()
protoreflect
.
EnumNumber
{
func
(
x
UserSetting
_
Key
)
Number
()
protoreflect
.
EnumNumber
{
return
protoreflect
.
EnumNumber
(
x
)
return
protoreflect
.
EnumNumber
(
x
)
}
}
// Deprecated: Use UserSettingKey.Descriptor instead.
// Deprecated: Use UserSetting
_
Key.Descriptor instead.
func
(
UserSettingKey
)
EnumDescriptor
()
([]
byte
,
[]
int
)
{
func
(
UserSetting
_
Key
)
EnumDescriptor
()
([]
byte
,
[]
int
)
{
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
0
}
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
0
,
0
}
}
}
type
UserSetting
struct
{
type
UserSetting
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
state
protoimpl
.
MessageState
`protogen:"open.v1"`
UserId
int32
`protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
UserId
int32
`protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
Key
UserSetting
Key
`protobuf:"varint,2,opt,name=key,proto3,enum=memos.store.UserSetting
Key" json:"key,omitempty"`
Key
UserSetting
_Key
`protobuf:"varint,2,opt,name=key,proto3,enum=memos.store.UserSetting_
Key" json:"key,omitempty"`
// Types that are valid to be assigned to Value:
// Types that are valid to be assigned to Value:
//
//
// *UserSetting_General
// *UserSetting_Sessions
// *UserSetting_AccessTokens
// *UserSetting_AccessTokens
// *UserSetting_Locale
// *UserSetting_Appearance
// *UserSetting_MemoVisibility
// *UserSetting_Shortcuts
// *UserSetting_Shortcuts
// *UserSetting_Sessions
Value
isUserSetting_Value
`protobuf_oneof:"value"`
Value
isUserSetting_Value
`protobuf_oneof:"value"`
unknownFields
protoimpl
.
UnknownFields
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
sizeCache
protoimpl
.
SizeCache
...
@@ -143,11 +133,11 @@ func (x *UserSetting) GetUserId() int32 {
...
@@ -143,11 +133,11 @@ func (x *UserSetting) GetUserId() int32 {
return
0
return
0
}
}
func
(
x
*
UserSetting
)
GetKey
()
UserSettingKey
{
func
(
x
*
UserSetting
)
GetKey
()
UserSetting
_
Key
{
if
x
!=
nil
{
if
x
!=
nil
{
return
x
.
Key
return
x
.
Key
}
}
return
UserSetting
Key_USER_SETTING
_KEY_UNSPECIFIED
return
UserSetting_KEY_UNSPECIFIED
}
}
func
(
x
*
UserSetting
)
GetValue
()
isUserSetting_Value
{
func
(
x
*
UserSetting
)
GetValue
()
isUserSetting_Value
{
...
@@ -157,40 +147,31 @@ func (x *UserSetting) GetValue() isUserSetting_Value {
...
@@ -157,40 +147,31 @@ func (x *UserSetting) GetValue() isUserSetting_Value {
return
nil
return
nil
}
}
func
(
x
*
UserSetting
)
Get
AccessTokens
()
*
AccessTokens
UserSetting
{
func
(
x
*
UserSetting
)
Get
General
()
*
General
UserSetting
{
if
x
!=
nil
{
if
x
!=
nil
{
if
x
,
ok
:=
x
.
Value
.
(
*
UserSetting_
AccessTokens
);
ok
{
if
x
,
ok
:=
x
.
Value
.
(
*
UserSetting_
General
);
ok
{
return
x
.
AccessTokens
return
x
.
General
}
}
}
}
return
nil
return
nil
}
}
func
(
x
*
UserSetting
)
GetLocale
()
string
{
func
(
x
*
UserSetting
)
GetSessions
()
*
SessionsUserSetting
{
if
x
!=
nil
{
if
x
,
ok
:=
x
.
Value
.
(
*
UserSetting_Locale
);
ok
{
return
x
.
Locale
}
}
return
""
}
func
(
x
*
UserSetting
)
GetAppearance
()
string
{
if
x
!=
nil
{
if
x
!=
nil
{
if
x
,
ok
:=
x
.
Value
.
(
*
UserSetting_
Appearance
);
ok
{
if
x
,
ok
:=
x
.
Value
.
(
*
UserSetting_
Sessions
);
ok
{
return
x
.
Appearance
return
x
.
Sessions
}
}
}
}
return
""
return
nil
}
}
func
(
x
*
UserSetting
)
Get
MemoVisibility
()
str
ing
{
func
(
x
*
UserSetting
)
Get
AccessTokens
()
*
AccessTokensUserSett
ing
{
if
x
!=
nil
{
if
x
!=
nil
{
if
x
,
ok
:=
x
.
Value
.
(
*
UserSetting_
MemoVisibility
);
ok
{
if
x
,
ok
:=
x
.
Value
.
(
*
UserSetting_
AccessTokens
);
ok
{
return
x
.
MemoVisibility
return
x
.
AccessTokens
}
}
}
}
return
""
return
nil
}
}
func
(
x
*
UserSetting
)
GetShortcuts
()
*
ShortcutsUserSetting
{
func
(
x
*
UserSetting
)
GetShortcuts
()
*
ShortcutsUserSetting
{
...
@@ -202,76 +183,60 @@ func (x *UserSetting) GetShortcuts() *ShortcutsUserSetting {
...
@@ -202,76 +183,60 @@ func (x *UserSetting) GetShortcuts() *ShortcutsUserSetting {
return
nil
return
nil
}
}
func
(
x
*
UserSetting
)
GetSessions
()
*
SessionsUserSetting
{
if
x
!=
nil
{
if
x
,
ok
:=
x
.
Value
.
(
*
UserSetting_Sessions
);
ok
{
return
x
.
Sessions
}
}
return
nil
}
type
isUserSetting_Value
interface
{
type
isUserSetting_Value
interface
{
isUserSetting_Value
()
isUserSetting_Value
()
}
}
type
UserSetting_AccessTokens
struct
{
type
UserSetting_General
struct
{
AccessTokens
*
AccessTokensUserSetting
`protobuf:"bytes,3,opt,name=access_tokens,json=accessTokens,proto3,oneof"`
General
*
GeneralUserSetting
`protobuf:"bytes,3,opt,name=general,proto3,oneof"`
}
type
UserSetting_Locale
struct
{
Locale
string
`protobuf:"bytes,4,opt,name=locale,proto3,oneof"`
}
}
type
UserSetting_
Appearance
struct
{
type
UserSetting_
Sessions
struct
{
Appearance
string
`protobuf:"bytes,5,opt,name=appearance
,proto3,oneof"`
Sessions
*
SessionsUserSetting
`protobuf:"bytes,4,opt,name=sessions
,proto3,oneof"`
}
}
type
UserSetting_
MemoVisibility
struct
{
type
UserSetting_
AccessTokens
struct
{
MemoVisibility
string
`protobuf:"bytes,6,opt,name=memo_visibility,json=memoVisibility
,proto3,oneof"`
AccessTokens
*
AccessTokensUserSetting
`protobuf:"bytes,5,opt,name=access_tokens,json=accessTokens
,proto3,oneof"`
}
}
type
UserSetting_Shortcuts
struct
{
type
UserSetting_Shortcuts
struct
{
Shortcuts
*
ShortcutsUserSetting
`protobuf:"bytes,
7
,opt,name=shortcuts,proto3,oneof"`
Shortcuts
*
ShortcutsUserSetting
`protobuf:"bytes,
6
,opt,name=shortcuts,proto3,oneof"`
}
}
type
UserSetting_Sessions
struct
{
func
(
*
UserSetting_General
)
isUserSetting_Value
()
{}
Sessions
*
SessionsUserSetting
`protobuf:"bytes,8,opt,name=sessions,proto3,oneof"`
}
func
(
*
UserSetting_AccessTokens
)
isUserSetting_Value
()
{}
func
(
*
UserSetting_Locale
)
isUserSetting_Value
()
{}
func
(
*
UserSetting_Sessions
)
isUserSetting_Value
()
{}
func
(
*
UserSetting_Appearance
)
isUserSetting_Value
()
{}
func
(
*
UserSetting_
MemoVisibility
)
isUserSetting_Value
()
{}
func
(
*
UserSetting_
AccessTokens
)
isUserSetting_Value
()
{}
func
(
*
UserSetting_Shortcuts
)
isUserSetting_Value
()
{}
func
(
*
UserSetting_Shortcuts
)
isUserSetting_Value
()
{}
func
(
*
UserSetting_Sessions
)
isUserSetting_Value
()
{}
type
GeneralUserSetting
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
type
AccessTokensUserSetting
struct
{
// The user's locale.
state
protoimpl
.
MessageState
`protogen:"open.v1"`
Locale
string
`protobuf:"bytes,1,opt,name=locale,proto3" json:"locale,omitempty"`
AccessTokens
[]
*
AccessTokensUserSetting_AccessToken
`protobuf:"bytes,1,rep,name=access_tokens,json=accessTokens,proto3" json:"access_tokens,omitempty"`
// The user's appearance setting.
unknownFields
protoimpl
.
UnknownFields
Appearance
string
`protobuf:"bytes,2,opt,name=appearance,proto3" json:"appearance,omitempty"`
sizeCache
protoimpl
.
SizeCache
// The user's memo visibility setting.
}
MemoVisibility
string
`protobuf:"bytes,3,opt,name=memo_visibility,json=memoVisibility,proto3" json:"memo_visibility,omitempty"`
unknownFields
protoimpl
.
UnknownFields
func
(
x
*
AccessTokensUserSetting
)
Reset
()
{
sizeCache
protoimpl
.
SizeCache
*
x
=
AccessTokensUserSetting
{}
}
func
(
x
*
GeneralUserSetting
)
Reset
()
{
*
x
=
GeneralUserSetting
{}
mi
:=
&
file_store_user_setting_proto_msgTypes
[
1
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
1
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
AccessTokens
UserSetting
)
String
()
string
{
func
(
x
*
General
UserSetting
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
}
func
(
*
AccessTokens
UserSetting
)
ProtoMessage
()
{}
func
(
*
General
UserSetting
)
ProtoMessage
()
{}
func
(
x
*
AccessTokens
UserSetting
)
ProtoReflect
()
protoreflect
.
Message
{
func
(
x
*
General
UserSetting
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_store_user_setting_proto_msgTypes
[
1
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
1
]
if
x
!=
nil
{
if
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
...
@@ -283,60 +248,30 @@ func (x *AccessTokensUserSetting) ProtoReflect() protoreflect.Message {
...
@@ -283,60 +248,30 @@ func (x *AccessTokensUserSetting) ProtoReflect() protoreflect.Message {
return
mi
.
MessageOf
(
x
)
return
mi
.
MessageOf
(
x
)
}
}
// Deprecated: Use
AccessTokens
UserSetting.ProtoReflect.Descriptor instead.
// Deprecated: Use
General
UserSetting.ProtoReflect.Descriptor instead.
func
(
*
AccessTokens
UserSetting
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
General
UserSetting
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
1
}
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
1
}
}
}
func
(
x
*
AccessTokensUserSetting
)
GetAccessTokens
()
[]
*
AccessTokensUserSetting_AccessToken
{
func
(
x
*
GeneralUserSetting
)
GetLocale
()
string
{
if
x
!=
nil
{
if
x
!=
nil
{
return
x
.
AccessTokens
return
x
.
Locale
}
}
return
nil
return
""
}
type
ShortcutsUserSetting
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
Shortcuts
[]
*
ShortcutsUserSetting_Shortcut
`protobuf:"bytes,1,rep,name=shortcuts,proto3" json:"shortcuts,omitempty"`
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
}
func
(
x
*
ShortcutsUserSetting
)
Reset
()
{
*
x
=
ShortcutsUserSetting
{}
mi
:=
&
file_store_user_setting_proto_msgTypes
[
2
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
func
(
x
*
ShortcutsUserSetting
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
}
func
(
*
ShortcutsUserSetting
)
ProtoMessage
()
{}
func
(
x
*
GeneralUserSetting
)
GetAppearance
()
string
{
func
(
x
*
ShortcutsUserSetting
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_store_user_setting_proto_msgTypes
[
2
]
if
x
!=
nil
{
if
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
return
x
.
Appearance
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
}
return
mi
.
MessageOf
(
x
)
return
""
}
// Deprecated: Use ShortcutsUserSetting.ProtoReflect.Descriptor instead.
func
(
*
ShortcutsUserSetting
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
2
}
}
}
func
(
x
*
ShortcutsUserSetting
)
GetShortcuts
()
[]
*
ShortcutsUserSetting_Shortcut
{
func
(
x
*
GeneralUserSetting
)
GetMemoVisibility
()
string
{
if
x
!=
nil
{
if
x
!=
nil
{
return
x
.
Shortcuts
return
x
.
MemoVisibility
}
}
return
nil
return
""
}
}
type
SessionsUserSetting
struct
{
type
SessionsUserSetting
struct
{
...
@@ -348,7 +283,7 @@ type SessionsUserSetting struct {
...
@@ -348,7 +283,7 @@ type SessionsUserSetting struct {
func
(
x
*
SessionsUserSetting
)
Reset
()
{
func
(
x
*
SessionsUserSetting
)
Reset
()
{
*
x
=
SessionsUserSetting
{}
*
x
=
SessionsUserSetting
{}
mi
:=
&
file_store_user_setting_proto_msgTypes
[
3
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
2
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
ms
.
StoreMessageInfo
(
mi
)
}
}
...
@@ -360,7 +295,7 @@ func (x *SessionsUserSetting) String() string {
...
@@ -360,7 +295,7 @@ func (x *SessionsUserSetting) String() string {
func
(
*
SessionsUserSetting
)
ProtoMessage
()
{}
func
(
*
SessionsUserSetting
)
ProtoMessage
()
{}
func
(
x
*
SessionsUserSetting
)
ProtoReflect
()
protoreflect
.
Message
{
func
(
x
*
SessionsUserSetting
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_store_user_setting_proto_msgTypes
[
3
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
2
]
if
x
!=
nil
{
if
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
if
ms
.
LoadMessageInfo
()
==
nil
{
...
@@ -373,7 +308,7 @@ func (x *SessionsUserSetting) ProtoReflect() protoreflect.Message {
...
@@ -373,7 +308,7 @@ func (x *SessionsUserSetting) ProtoReflect() protoreflect.Message {
// Deprecated: Use SessionsUserSetting.ProtoReflect.Descriptor instead.
// Deprecated: Use SessionsUserSetting.ProtoReflect.Descriptor instead.
func
(
*
SessionsUserSetting
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
SessionsUserSetting
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
3
}
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
2
}
}
}
func
(
x
*
SessionsUserSetting
)
GetSessions
()
[]
*
SessionsUserSetting_Session
{
func
(
x
*
SessionsUserSetting
)
GetSessions
()
[]
*
SessionsUserSetting_Session
{
...
@@ -383,32 +318,28 @@ func (x *SessionsUserSetting) GetSessions() []*SessionsUserSetting_Session {
...
@@ -383,32 +318,28 @@ func (x *SessionsUserSetting) GetSessions() []*SessionsUserSetting_Session {
return
nil
return
nil
}
}
type
AccessTokensUserSetting_AccessToken
struct
{
type
AccessTokensUserSetting
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
state
protoimpl
.
MessageState
`protogen:"open.v1"`
// The access token is a JWT token.
AccessTokens
[]
*
AccessTokensUserSetting_AccessToken
`protobuf:"bytes,1,rep,name=access_tokens,json=accessTokens,proto3" json:"access_tokens,omitempty"`
// Including expiration time, issuer, etc.
AccessToken
string
`protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"`
// A description for the access token.
Description
string
`protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
unknownFields
protoimpl
.
UnknownFields
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
sizeCache
protoimpl
.
SizeCache
}
}
func
(
x
*
AccessTokensUserSetting
_AccessToken
)
Reset
()
{
func
(
x
*
AccessTokensUserSetting
)
Reset
()
{
*
x
=
AccessTokensUserSetting
_AccessToken
{}
*
x
=
AccessTokensUserSetting
{}
mi
:=
&
file_store_user_setting_proto_msgTypes
[
4
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
3
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
AccessTokensUserSetting
_AccessToken
)
String
()
string
{
func
(
x
*
AccessTokensUserSetting
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
}
func
(
*
AccessTokensUserSetting
_AccessToken
)
ProtoMessage
()
{}
func
(
*
AccessTokensUserSetting
)
ProtoMessage
()
{}
func
(
x
*
AccessTokensUserSetting
_AccessToken
)
ProtoReflect
()
protoreflect
.
Message
{
func
(
x
*
AccessTokensUserSetting
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_store_user_setting_proto_msgTypes
[
4
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
3
]
if
x
!=
nil
{
if
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
if
ms
.
LoadMessageInfo
()
==
nil
{
...
@@ -419,49 +350,40 @@ func (x *AccessTokensUserSetting_AccessToken) ProtoReflect() protoreflect.Messag
...
@@ -419,49 +350,40 @@ func (x *AccessTokensUserSetting_AccessToken) ProtoReflect() protoreflect.Messag
return
mi
.
MessageOf
(
x
)
return
mi
.
MessageOf
(
x
)
}
}
// Deprecated: Use AccessTokensUserSetting_AccessToken.ProtoReflect.Descriptor instead.
// Deprecated: Use AccessTokensUserSetting.ProtoReflect.Descriptor instead.
func
(
*
AccessTokensUserSetting_AccessToken
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
AccessTokensUserSetting
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
1
,
0
}
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
3
}
}
func
(
x
*
AccessTokensUserSetting_AccessToken
)
GetAccessToken
()
string
{
if
x
!=
nil
{
return
x
.
AccessToken
}
return
""
}
}
func
(
x
*
AccessTokensUserSetting
_AccessToken
)
GetDescription
()
string
{
func
(
x
*
AccessTokensUserSetting
)
GetAccessTokens
()
[]
*
AccessTokensUserSetting_AccessToken
{
if
x
!=
nil
{
if
x
!=
nil
{
return
x
.
Description
return
x
.
AccessTokens
}
}
return
""
return
nil
}
}
type
ShortcutsUserSetting_Shortcut
struct
{
type
ShortcutsUserSetting
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
state
protoimpl
.
MessageState
`protogen:"open.v1"`
Id
string
`protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Shortcuts
[]
*
ShortcutsUserSetting_Shortcut
`protobuf:"bytes,1,rep,name=shortcuts,proto3" json:"shortcuts,omitempty"`
Title
string
`protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
Filter
string
`protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"`
unknownFields
protoimpl
.
UnknownFields
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
sizeCache
protoimpl
.
SizeCache
}
}
func
(
x
*
ShortcutsUserSetting
_Shortcut
)
Reset
()
{
func
(
x
*
ShortcutsUserSetting
)
Reset
()
{
*
x
=
ShortcutsUserSetting
_Shortcut
{}
*
x
=
ShortcutsUserSetting
{}
mi
:=
&
file_store_user_setting_proto_msgTypes
[
5
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
4
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
ShortcutsUserSetting
_Shortcut
)
String
()
string
{
func
(
x
*
ShortcutsUserSetting
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
}
func
(
*
ShortcutsUserSetting
_Shortcut
)
ProtoMessage
()
{}
func
(
*
ShortcutsUserSetting
)
ProtoMessage
()
{}
func
(
x
*
ShortcutsUserSetting
_Shortcut
)
ProtoReflect
()
protoreflect
.
Message
{
func
(
x
*
ShortcutsUserSetting
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_store_user_setting_proto_msgTypes
[
5
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
4
]
if
x
!=
nil
{
if
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
if
ms
.
LoadMessageInfo
()
==
nil
{
...
@@ -472,30 +394,16 @@ func (x *ShortcutsUserSetting_Shortcut) ProtoReflect() protoreflect.Message {
...
@@ -472,30 +394,16 @@ func (x *ShortcutsUserSetting_Shortcut) ProtoReflect() protoreflect.Message {
return
mi
.
MessageOf
(
x
)
return
mi
.
MessageOf
(
x
)
}
}
// Deprecated: Use ShortcutsUserSetting_Shortcut.ProtoReflect.Descriptor instead.
// Deprecated: Use ShortcutsUserSetting.ProtoReflect.Descriptor instead.
func
(
*
ShortcutsUserSetting_Shortcut
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
ShortcutsUserSetting
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
2
,
0
}
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
4
}
}
func
(
x
*
ShortcutsUserSetting_Shortcut
)
GetId
()
string
{
if
x
!=
nil
{
return
x
.
Id
}
return
""
}
func
(
x
*
ShortcutsUserSetting_Shortcut
)
GetTitle
()
string
{
if
x
!=
nil
{
return
x
.
Title
}
return
""
}
}
func
(
x
*
ShortcutsUserSetting
_Shortcut
)
GetFilter
()
string
{
func
(
x
*
ShortcutsUserSetting
)
GetShortcuts
()
[]
*
ShortcutsUserSetting_Shortcut
{
if
x
!=
nil
{
if
x
!=
nil
{
return
x
.
Filter
return
x
.
Shortcuts
}
}
return
""
return
nil
}
}
type
SessionsUserSetting_Session
struct
{
type
SessionsUserSetting_Session
struct
{
...
@@ -516,7 +424,7 @@ type SessionsUserSetting_Session struct {
...
@@ -516,7 +424,7 @@ type SessionsUserSetting_Session struct {
func
(
x
*
SessionsUserSetting_Session
)
Reset
()
{
func
(
x
*
SessionsUserSetting_Session
)
Reset
()
{
*
x
=
SessionsUserSetting_Session
{}
*
x
=
SessionsUserSetting_Session
{}
mi
:=
&
file_store_user_setting_proto_msgTypes
[
6
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
5
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
ms
.
StoreMessageInfo
(
mi
)
}
}
...
@@ -528,7 +436,7 @@ func (x *SessionsUserSetting_Session) String() string {
...
@@ -528,7 +436,7 @@ func (x *SessionsUserSetting_Session) String() string {
func
(
*
SessionsUserSetting_Session
)
ProtoMessage
()
{}
func
(
*
SessionsUserSetting_Session
)
ProtoMessage
()
{}
func
(
x
*
SessionsUserSetting_Session
)
ProtoReflect
()
protoreflect
.
Message
{
func
(
x
*
SessionsUserSetting_Session
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_store_user_setting_proto_msgTypes
[
6
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
5
]
if
x
!=
nil
{
if
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
if
ms
.
LoadMessageInfo
()
==
nil
{
...
@@ -541,7 +449,7 @@ func (x *SessionsUserSetting_Session) ProtoReflect() protoreflect.Message {
...
@@ -541,7 +449,7 @@ func (x *SessionsUserSetting_Session) ProtoReflect() protoreflect.Message {
// Deprecated: Use SessionsUserSetting_Session.ProtoReflect.Descriptor instead.
// Deprecated: Use SessionsUserSetting_Session.ProtoReflect.Descriptor instead.
func
(
*
SessionsUserSetting_Session
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
SessionsUserSetting_Session
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
3
,
0
}
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
2
,
0
}
}
}
func
(
x
*
SessionsUserSetting_Session
)
GetSessionId
()
string
{
func
(
x
*
SessionsUserSetting_Session
)
GetSessionId
()
string
{
...
@@ -597,7 +505,7 @@ type SessionsUserSetting_ClientInfo struct {
...
@@ -597,7 +505,7 @@ type SessionsUserSetting_ClientInfo struct {
func
(
x
*
SessionsUserSetting_ClientInfo
)
Reset
()
{
func
(
x
*
SessionsUserSetting_ClientInfo
)
Reset
()
{
*
x
=
SessionsUserSetting_ClientInfo
{}
*
x
=
SessionsUserSetting_ClientInfo
{}
mi
:=
&
file_store_user_setting_proto_msgTypes
[
7
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
6
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
ms
.
StoreMessageInfo
(
mi
)
}
}
...
@@ -609,7 +517,7 @@ func (x *SessionsUserSetting_ClientInfo) String() string {
...
@@ -609,7 +517,7 @@ func (x *SessionsUserSetting_ClientInfo) String() string {
func
(
*
SessionsUserSetting_ClientInfo
)
ProtoMessage
()
{}
func
(
*
SessionsUserSetting_ClientInfo
)
ProtoMessage
()
{}
func
(
x
*
SessionsUserSetting_ClientInfo
)
ProtoReflect
()
protoreflect
.
Message
{
func
(
x
*
SessionsUserSetting_ClientInfo
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_store_user_setting_proto_msgTypes
[
7
]
mi
:=
&
file_store_user_setting_proto_msgTypes
[
6
]
if
x
!=
nil
{
if
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
if
ms
.
LoadMessageInfo
()
==
nil
{
...
@@ -622,7 +530,7 @@ func (x *SessionsUserSetting_ClientInfo) ProtoReflect() protoreflect.Message {
...
@@ -622,7 +530,7 @@ func (x *SessionsUserSetting_ClientInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use SessionsUserSetting_ClientInfo.ProtoReflect.Descriptor instead.
// Deprecated: Use SessionsUserSetting_ClientInfo.ProtoReflect.Descriptor instead.
func
(
*
SessionsUserSetting_ClientInfo
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
SessionsUserSetting_ClientInfo
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
3
,
1
}
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
2
,
1
}
}
}
func
(
x
*
SessionsUserSetting_ClientInfo
)
GetUserAgent
()
string
{
func
(
x
*
SessionsUserSetting_ClientInfo
)
GetUserAgent
()
string
{
...
@@ -660,34 +568,146 @@ func (x *SessionsUserSetting_ClientInfo) GetBrowser() string {
...
@@ -660,34 +568,146 @@ func (x *SessionsUserSetting_ClientInfo) GetBrowser() string {
return
""
return
""
}
}
type
AccessTokensUserSetting_AccessToken
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
// The access token is a JWT token.
// Including expiration time, issuer, etc.
AccessToken
string
`protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"`
// A description for the access token.
Description
string
`protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
}
func
(
x
*
AccessTokensUserSetting_AccessToken
)
Reset
()
{
*
x
=
AccessTokensUserSetting_AccessToken
{}
mi
:=
&
file_store_user_setting_proto_msgTypes
[
7
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
func
(
x
*
AccessTokensUserSetting_AccessToken
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
AccessTokensUserSetting_AccessToken
)
ProtoMessage
()
{}
func
(
x
*
AccessTokensUserSetting_AccessToken
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_store_user_setting_proto_msgTypes
[
7
]
if
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
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
{
3
,
0
}
}
func
(
x
*
AccessTokensUserSetting_AccessToken
)
GetAccessToken
()
string
{
if
x
!=
nil
{
return
x
.
AccessToken
}
return
""
}
func
(
x
*
AccessTokensUserSetting_AccessToken
)
GetDescription
()
string
{
if
x
!=
nil
{
return
x
.
Description
}
return
""
}
type
ShortcutsUserSetting_Shortcut
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
Id
string
`protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Title
string
`protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
Filter
string
`protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"`
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
}
func
(
x
*
ShortcutsUserSetting_Shortcut
)
Reset
()
{
*
x
=
ShortcutsUserSetting_Shortcut
{}
mi
:=
&
file_store_user_setting_proto_msgTypes
[
8
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
func
(
x
*
ShortcutsUserSetting_Shortcut
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
ShortcutsUserSetting_Shortcut
)
ProtoMessage
()
{}
func
(
x
*
ShortcutsUserSetting_Shortcut
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_store_user_setting_proto_msgTypes
[
8
]
if
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use ShortcutsUserSetting_Shortcut.ProtoReflect.Descriptor instead.
func
(
*
ShortcutsUserSetting_Shortcut
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_store_user_setting_proto_rawDescGZIP
(),
[]
int
{
4
,
0
}
}
func
(
x
*
ShortcutsUserSetting_Shortcut
)
GetId
()
string
{
if
x
!=
nil
{
return
x
.
Id
}
return
""
}
func
(
x
*
ShortcutsUserSetting_Shortcut
)
GetTitle
()
string
{
if
x
!=
nil
{
return
x
.
Title
}
return
""
}
func
(
x
*
ShortcutsUserSetting_Shortcut
)
GetFilter
()
string
{
if
x
!=
nil
{
return
x
.
Filter
}
return
""
}
var
File_store_user_setting_proto
protoreflect
.
FileDescriptor
var
File_store_user_setting_proto
protoreflect
.
FileDescriptor
const
file_store_user_setting_proto_rawDesc
=
""
+
const
file_store_user_setting_proto_rawDesc
=
""
+
"
\n
"
+
"
\n
"
+
"
\x18
store/user_setting.proto
\x12\v
memos.store
\x1a\x1f
google/protobuf/timestamp.proto
\"\x
9
5\x03\n
"
+
"
\x18
store/user_setting.proto
\x12\v
memos.store
\x1a\x1f
google/protobuf/timestamp.proto
\"\x
c
5\x03\n
"
+
"
\v
UserSetting
\x12\x17\n
"
+
"
\v
UserSetting
\x12\x17\n
"
+
"
\a
user_id
\x18\x01
\x01
(
\x05
R
\x06
userId
\x12
-
\n
"
+
"
\a
user_id
\x18\x01
\x01
(
\x05
R
\x06
userId
\x12
.
\n
"
+
"
\x03
key
\x18\x02
\x01
(
\x0e
2
\x1b
.memos.store.UserSettingKeyR
\x03
key
\x12
K
\n
"
+
"
\x03
key
\x18\x02
\x01
(
\x0e
2
\x1c
.memos.store.UserSetting.KeyR
\x03
key
\x12
;
\n
"
+
"
\r
access_tokens
\x18\x03
\x01
(
\v
2$.memos.store.AccessTokensUserSettingH
\x00
R
\f
accessTokens
\x12\x18\n
"
+
"
\a
general
\x18\x03
\x01
(
\v
2
\x1f
.memos.store.GeneralUserSettingH
\x00
R
\a
general
\x12
>
\n
"
+
"
\x06
locale
\x18\x04
\x01
(
\t
H
\x00
R
\x06
locale
\x12
\n
"
+
"
\b
sessions
\x18\x04
\x01
(
\v
2 .memos.store.SessionsUserSettingH
\x00
R
\b
sessions
\x12
K
\n
"
+
"
\r
access_tokens
\x18\x05
\x01
(
\v
2$.memos.store.AccessTokensUserSettingH
\x00
R
\f
accessTokens
\x12
A
\n
"
+
"
\t
shortcuts
\x18\x06
\x01
(
\v
2!.memos.store.ShortcutsUserSettingH
\x00
R
\t
shortcuts
\"
W
\n
"
+
"
\x03
Key
\x12\x13\n
"
+
"
\x0f
KEY_UNSPECIFIED
\x10\x00\x12\v\n
"
+
"
\a
GENERAL
\x10\x01\x12\f\n
"
+
"
\b
SESSIONS
\x10\x02\x12\x11\n
"
+
"
\r
ACCESS_TOKENS
\x10\x03\x12\r\n
"
+
"
\t
SHORTCUTS
\x10\x04
B
\a\n
"
+
"
\x05
value
\"
u
\n
"
+
"
\x12
GeneralUserSetting
\x12\x16\n
"
+
"
\x06
locale
\x18\x01
\x01
(
\t
R
\x06
locale
\x12\x1e\n
"
+
"
\n
"
+
"
\n
"
+
"appearance
\x18\x05
\x01
(
\t
H
\x00
R
\n
"
+
"appearance
\x18\x02
\x01
(
\t
R
\n
"
+
"appearance
\x12
)
\n
"
+
"appearance
\x12
'
\n
"
+
"
\x0f
memo_visibility
\x18\x06
\x01
(
\t
H
\x00
R
\x0e
memoVisibility
\x12
A
\n
"
+
"
\x0f
memo_visibility
\x18\x03
\x01
(
\t
R
\x0e
memoVisibility
\"\xb0\x04\n
"
+
"
\t
shortcuts
\x18\a
\x01
(
\v
2!.memos.store.ShortcutsUserSettingH
\x00
R
\t
shortcuts
\x12
>
\n
"
+
"
\b
sessions
\x18\b
\x01
(
\v
2 .memos.store.SessionsUserSettingH
\x00
R
\b
sessionsB
\a\n
"
+
"
\x05
value
\"\xc4\x01\n
"
+
"
\x17
AccessTokensUserSetting
\x12
U
\n
"
+
"
\r
access_tokens
\x18\x01
\x03
(
\v
20.memos.store.AccessTokensUserSetting.AccessTokenR
\f
accessTokens
\x1a
R
\n
"
+
"
\v
AccessToken
\x12
!
\n
"
+
"
\f
access_token
\x18\x01
\x01
(
\t
R
\v
accessToken
\x12
\n
"
+
"
\v
description
\x18\x02
\x01
(
\t
R
\v
description
\"\xaa\x01\n
"
+
"
\x14
ShortcutsUserSetting
\x12
H
\n
"
+
"
\t
shortcuts
\x18\x01
\x03
(
\v
2*.memos.store.ShortcutsUserSetting.ShortcutR
\t
shortcuts
\x1a
H
\n
"
+
"
\b
Shortcut
\x12\x0e\n
"
+
"
\x02
id
\x18\x01
\x01
(
\t
R
\x02
id
\x12\x14\n
"
+
"
\x05
title
\x18\x02
\x01
(
\t
R
\x05
title
\x12\x16\n
"
+
"
\x06
filter
\x18\x03
\x01
(
\t
R
\x06
filter
\"\xb0\x04\n
"
+
"
\x13
SessionsUserSetting
\x12
D
\n
"
+
"
\x13
SessionsUserSetting
\x12
D
\n
"
+
"
\b
sessions
\x18\x01
\x03
(
\v
2(.memos.store.SessionsUserSetting.SessionR
\b
sessions
\x1a\xba\x02\n
"
+
"
\b
sessions
\x18\x01
\x03
(
\v
2(.memos.store.SessionsUserSetting.SessionR
\b
sessions
\x1a\xba\x02\n
"
+
"
\a
Session
\x12\x1d\n
"
+
"
\a
Session
\x12\x1d\n
"
+
...
@@ -709,17 +729,18 @@ const file_store_user_setting_proto_rawDesc = "" +
...
@@ -709,17 +729,18 @@ const file_store_user_setting_proto_rawDesc = "" +
"
\v
device_type
\x18\x03
\x01
(
\t
R
\n
"
+
"
\v
device_type
\x18\x03
\x01
(
\t
R
\n
"
+
"deviceType
\x12\x0e\n
"
+
"deviceType
\x12\x0e\n
"
+
"
\x02
os
\x18\x04
\x01
(
\t
R
\x02
os
\x12\x18\n
"
+
"
\x02
os
\x18\x04
\x01
(
\t
R
\x02
os
\x12\x18\n
"
+
"
\a
browser
\x18\x05
\x01
(
\t
R
\a
browser*
\x93\x01\n
"
+
"
\a
browser
\x18\x05
\x01
(
\t
R
\a
browser
\"\xc4\x01\n
"
+
"
\x0e
UserSettingKey
\x12
\n
"
+
"
\x17
AccessTokensUserSetting
\x12
U
\n
"
+
"
\x1c
USER_SETTING_KEY_UNSPECIFIED
\x10\x00\x12\x11\n
"
+
"
\r
access_tokens
\x18\x01
\x03
(
\v
20.memos.store.AccessTokensUserSetting.AccessTokenR
\f
accessTokens
\x1a
R
\n
"
+
"
\r
ACCESS_TOKENS
\x10\x01\x12\n
"
+
"
\v
AccessToken
\x12
!
\n
"
+
"
\n
"
+
"
\f
access_token
\x18\x01
\x01
(
\t
R
\v
accessToken
\x12
\n
"
+
"
\x06
LOCALE
\x10\x02\x12\x0e\n
"
+
"
\v
description
\x18\x02
\x01
(
\t
R
\v
description
\"\xaa\x01\n
"
+
"
\n
"
+
"
\x14
ShortcutsUserSetting
\x12
H
\n
"
+
"APPEARANCE
\x10\x03\x12\x13\n
"
+
"
\t
shortcuts
\x18\x01
\x03
(
\v
2*.memos.store.ShortcutsUserSetting.ShortcutR
\t
shortcuts
\x1a
H
\n
"
+
"
\x0f
MEMO_VISIBILITY
\x10\x04\x12\r\n
"
+
"
\b
Shortcut
\x12\x0e\n
"
+
"
\t
SHORTCUTS
\x10\x05\x12\f\n
"
+
"
\x02
id
\x18\x01
\x01
(
\t
R
\x02
id
\x12\x14\n
"
+
"
\b
SESSIONS
\x10\x06
B
\x9b\x01\n
"
+
"
\x05
title
\x18\x02
\x01
(
\t
R
\x05
title
\x12\x16\n
"
+
"
\x06
filter
\x18\x03
\x01
(
\t
R
\x06
filterB
\x9b\x01\n
"
+
"
\x0f
com.memos.storeB
\x10
UserSettingProtoP
\x01
Z)github.com/usememos/memos/proto/gen/store
\xa2\x02\x03
MSX
\xaa\x02\v
Memos.Store
\xca\x02\v
Memos
\\
Store
\xe2\x02\x17
Memos
\\
Store
\\
GPBMetadata
\xea\x02\f
Memos::Storeb
\x06
proto3"
"
\x0f
com.memos.storeB
\x10
UserSettingProtoP
\x01
Z)github.com/usememos/memos/proto/gen/store
\xa2\x02\x03
MSX
\xaa\x02\v
Memos.Store
\xca\x02\v
Memos
\\
Store
\xe2\x02\x17
Memos
\\
Store
\\
GPBMetadata
\xea\x02\f
Memos::Storeb
\x06
proto3"
var
(
var
(
...
@@ -735,36 +756,38 @@ func file_store_user_setting_proto_rawDescGZIP() []byte {
...
@@ -735,36 +756,38 @@ 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_enumTypes
=
make
([]
protoimpl
.
EnumInfo
,
1
)
var
file_store_user_setting_proto_msgTypes
=
make
([]
protoimpl
.
MessageInfo
,
8
)
var
file_store_user_setting_proto_msgTypes
=
make
([]
protoimpl
.
MessageInfo
,
9
)
var
file_store_user_setting_proto_goTypes
=
[]
any
{
var
file_store_user_setting_proto_goTypes
=
[]
any
{
(
UserSetting
Key
)(
0
),
// 0: memos.store.UserSetting
Key
(
UserSetting
_Key
)(
0
),
// 0: memos.store.UserSetting.
Key
(
*
UserSetting
)(
nil
),
// 1: memos.store.UserSetting
(
*
UserSetting
)(
nil
),
// 1: memos.store.UserSetting
(
*
AccessTokensUserSetting
)(
nil
),
// 2: memos.store.AccessTokensUserSetting
(
*
GeneralUserSetting
)(
nil
),
// 2: memos.store.GeneralUserSetting
(
*
ShortcutsUserSetting
)(
nil
),
// 3: memos.store.ShortcutsUserSetting
(
*
SessionsUserSetting
)(
nil
),
// 3: memos.store.SessionsUserSetting
(
*
SessionsUserSetting
)(
nil
),
// 4: memos.store.SessionsUserSetting
(
*
AccessTokensUserSetting
)(
nil
),
// 4: memos.store.AccessTokensUserSetting
(
*
AccessTokensUserSetting_AccessToken
)(
nil
),
// 5: memos.store.AccessTokensUserSetting.AccessToken
(
*
ShortcutsUserSetting
)(
nil
),
// 5: memos.store.ShortcutsUserSetting
(
*
ShortcutsUserSetting_Shortcut
)(
nil
),
// 6: memos.store.ShortcutsUserSetting.Shortcut
(
*
SessionsUserSetting_Session
)(
nil
),
// 6: memos.store.SessionsUserSetting.Session
(
*
SessionsUserSetting_Session
)(
nil
),
// 7: memos.store.SessionsUserSetting.Session
(
*
SessionsUserSetting_ClientInfo
)(
nil
),
// 7: memos.store.SessionsUserSetting.ClientInfo
(
*
SessionsUserSetting_ClientInfo
)(
nil
),
// 8: memos.store.SessionsUserSetting.ClientInfo
(
*
AccessTokensUserSetting_AccessToken
)(
nil
),
// 8: memos.store.AccessTokensUserSetting.AccessToken
(
*
timestamppb
.
Timestamp
)(
nil
),
// 9: google.protobuf.Timestamp
(
*
ShortcutsUserSetting_Shortcut
)(
nil
),
// 9: memos.store.ShortcutsUserSetting.Shortcut
(
*
timestamppb
.
Timestamp
)(
nil
),
// 10: google.protobuf.Timestamp
}
}
var
file_store_user_setting_proto_depIdxs
=
[]
int32
{
var
file_store_user_setting_proto_depIdxs
=
[]
int32
{
0
,
// 0: memos.store.UserSetting.key:type_name -> memos.store.UserSettingKey
0
,
// 0: memos.store.UserSetting.key:type_name -> memos.store.UserSetting.Key
2
,
// 1: memos.store.UserSetting.access_tokens:type_name -> memos.store.AccessTokensUserSetting
2
,
// 1: memos.store.UserSetting.general:type_name -> memos.store.GeneralUserSetting
3
,
// 2: memos.store.UserSetting.shortcuts:type_name -> memos.store.ShortcutsUserSetting
3
,
// 2: memos.store.UserSetting.sessions:type_name -> memos.store.SessionsUserSetting
4
,
// 3: memos.store.UserSetting.sessions:type_name -> memos.store.SessionsUserSetting
4
,
// 3: memos.store.UserSetting.access_tokens:type_name -> memos.store.AccessTokensUserSetting
5
,
// 4: memos.store.AccessTokensUserSetting.access_tokens:type_name -> memos.store.AccessTokensUserSetting.AccessToken
5
,
// 4: memos.store.UserSetting.shortcuts:type_name -> memos.store.ShortcutsUserSetting
6
,
// 5: memos.store.ShortcutsUserSetting.shortcuts:type_name -> memos.store.ShortcutsUserSetting.Shortcut
6
,
// 5: memos.store.SessionsUserSetting.sessions:type_name -> memos.store.SessionsUserSetting.Session
7
,
// 6: memos.store.SessionsUserSetting.sessions:type_name -> memos.store.SessionsUserSetting.Session
8
,
// 6: memos.store.AccessTokensUserSetting.access_tokens:type_name -> memos.store.AccessTokensUserSetting.AccessToken
9
,
// 7: memos.store.SessionsUserSetting.Session.create_time:type_name -> google.protobuf.Timestamp
9
,
// 7: memos.store.ShortcutsUserSetting.shortcuts:type_name -> memos.store.ShortcutsUserSetting.Shortcut
9
,
// 8: memos.store.SessionsUserSetting.Session.expire_time:type_name -> google.protobuf.Timestamp
10
,
// 8: memos.store.SessionsUserSetting.Session.create_time:type_name -> google.protobuf.Timestamp
9
,
// 9: memos.store.SessionsUserSetting.Session.last_accessed_time:type_name -> google.protobuf.Timestamp
10
,
// 9: memos.store.SessionsUserSetting.Session.expire_time:type_name -> google.protobuf.Timestamp
8
,
// 10: memos.store.SessionsUserSetting.Session.client_info:type_name -> memos.store.SessionsUserSetting.ClientInfo
10
,
// 10: memos.store.SessionsUserSetting.Session.last_accessed_time:type_name -> google.protobuf.Timestamp
11
,
// [11:11] is the sub-list for method output_type
7
,
// 11: memos.store.SessionsUserSetting.Session.client_info:type_name -> memos.store.SessionsUserSetting.ClientInfo
11
,
// [11:11] is the sub-list for method input_type
12
,
// [12:12] is the sub-list for method output_type
11
,
// [11:11] is the sub-list for extension type_name
12
,
// [12:12] is the sub-list for method input_type
11
,
// [11:11] is the sub-list for extension extendee
12
,
// [12:12] is the sub-list for extension type_name
0
,
// [0:11] is the sub-list for field type_name
12
,
// [12:12] is the sub-list for extension extendee
0
,
// [0:12] is the sub-list for field type_name
}
}
func
init
()
{
file_store_user_setting_proto_init
()
}
func
init
()
{
file_store_user_setting_proto_init
()
}
...
@@ -773,12 +796,10 @@ func file_store_user_setting_proto_init() {
...
@@ -773,12 +796,10 @@ func file_store_user_setting_proto_init() {
return
return
}
}
file_store_user_setting_proto_msgTypes
[
0
]
.
OneofWrappers
=
[]
any
{
file_store_user_setting_proto_msgTypes
[
0
]
.
OneofWrappers
=
[]
any
{
(
*
UserSetting_General
)(
nil
),
(
*
UserSetting_Sessions
)(
nil
),
(
*
UserSetting_AccessTokens
)(
nil
),
(
*
UserSetting_AccessTokens
)(
nil
),
(
*
UserSetting_Locale
)(
nil
),
(
*
UserSetting_Appearance
)(
nil
),
(
*
UserSetting_MemoVisibility
)(
nil
),
(
*
UserSetting_Shortcuts
)(
nil
),
(
*
UserSetting_Shortcuts
)(
nil
),
(
*
UserSetting_Sessions
)(
nil
),
}
}
type
x
struct
{}
type
x
struct
{}
out
:=
protoimpl
.
TypeBuilder
{
out
:=
protoimpl
.
TypeBuilder
{
...
@@ -786,7 +807,7 @@ func file_store_user_setting_proto_init() {
...
@@ -786,7 +807,7 @@ func file_store_user_setting_proto_init() {
GoPackagePath
:
reflect
.
TypeOf
(
x
{})
.
PkgPath
(),
GoPackagePath
:
reflect
.
TypeOf
(
x
{})
.
PkgPath
(),
RawDescriptor
:
unsafe
.
Slice
(
unsafe
.
StringData
(
file_store_user_setting_proto_rawDesc
),
len
(
file_store_user_setting_proto_rawDesc
)),
RawDescriptor
:
unsafe
.
Slice
(
unsafe
.
StringData
(
file_store_user_setting_proto_rawDesc
),
len
(
file_store_user_setting_proto_rawDesc
)),
NumEnums
:
1
,
NumEnums
:
1
,
NumMessages
:
8
,
NumMessages
:
9
,
NumExtensions
:
0
,
NumExtensions
:
0
,
NumServices
:
0
,
NumServices
:
0
,
},
},
...
...
proto/store/user_setting.proto
View file @
e6e46049
...
@@ -6,53 +6,38 @@ import "google/protobuf/timestamp.proto";
...
@@ -6,53 +6,38 @@ import "google/protobuf/timestamp.proto";
option
go_package
=
"gen/store"
;
option
go_package
=
"gen/store"
;
enum
UserSettingKey
{
USER_SETTING_KEY_UNSPECIFIED
=
0
;
// Access tokens for the user.
ACCESS_TOKENS
=
1
;
// The locale of the user.
LOCALE
=
2
;
// The appearance of the user.
APPEARANCE
=
3
;
// The visibility of the memo.
MEMO_VISIBILITY
=
4
;
// The shortcuts of the user.
SHORTCUTS
=
5
;
// User authentication sessions.
SESSIONS
=
6
;
}
message
UserSetting
{
message
UserSetting
{
int32
user_id
=
1
;
enum
Key
{
UserSettingKey
key
=
2
;
KEY_UNSPECIFIED
=
0
;
oneof
value
{
// General user settings.
AccessTokensUserSetting
access_tokens
=
3
;
GENERAL
=
1
;
string
locale
=
4
;
// User authentication sessions.
string
appearance
=
5
;
SESSIONS
=
2
;
string
memo_visibility
=
6
;
// Access tokens for the user.
ShortcutsUserSetting
shortcuts
=
7
;
ACCESS_TOKENS
=
3
;
SessionsUserSetting
sessions
=
8
;
// The shortcuts of the user.
SHORTCUTS
=
4
;
}
}
}
message
AccessTokensUserSetting
{
int32
user_id
=
1
;
message
AccessToken
{
// The access token is a JWT token.
Key
key
=
2
;
// Including expiration time, issuer, etc.
string
access_token
=
1
;
oneof
value
{
// A description for the access token.
GeneralUserSetting
general
=
3
;
string
description
=
2
;
SessionsUserSetting
sessions
=
4
;
AccessTokensUserSetting
access_tokens
=
5
;
ShortcutsUserSetting
shortcuts
=
6
;
}
}
repeated
AccessToken
access_tokens
=
1
;
}
}
message
Shortcuts
UserSetting
{
message
General
UserSetting
{
message
Shortcut
{
// The user's locale.
string
id
=
1
;
string
locale
=
1
;
string
title
=
2
;
// The user's appearance setting.
string
filter
=
3
;
string
appearance
=
2
;
}
// The user's memo visibility setting.
repeated
Shortcut
shortcuts
=
1
;
string
memo_visibility
=
3
;
}
}
message
SessionsUserSetting
{
message
SessionsUserSetting
{
...
@@ -84,3 +69,23 @@ message SessionsUserSetting {
...
@@ -84,3 +69,23 @@ message SessionsUserSetting {
repeated
Session
sessions
=
1
;
repeated
Session
sessions
=
1
;
}
}
message
AccessTokensUserSetting
{
message
AccessToken
{
// The access token is a JWT token.
// Including expiration time, issuer, etc.
string
access_token
=
1
;
// A description for the access token.
string
description
=
2
;
}
repeated
AccessToken
access_tokens
=
1
;
}
message
ShortcutsUserSetting
{
message
Shortcut
{
string
id
=
1
;
string
title
=
2
;
string
filter
=
3
;
}
repeated
Shortcut
shortcuts
=
1
;
}
server/router/api/v1/shortcut_service.go
View file @
e6e46049
...
@@ -59,7 +59,7 @@ func (s *APIV1Service) ListShortcuts(ctx context.Context, request *v1pb.ListShor
...
@@ -59,7 +59,7 @@ func (s *APIV1Service) ListShortcuts(ctx context.Context, request *v1pb.ListShor
userSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
userSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
UserID
:
&
userID
,
UserID
:
&
userID
,
Key
:
storepb
.
UserSetting
Key
_SHORTCUTS
,
Key
:
storepb
.
UserSetting_SHORTCUTS
,
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
@@ -101,7 +101,7 @@ func (s *APIV1Service) GetShortcut(ctx context.Context, request *v1pb.GetShortcu
...
@@ -101,7 +101,7 @@ func (s *APIV1Service) GetShortcut(ctx context.Context, request *v1pb.GetShortcu
userSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
userSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
UserID
:
&
userID
,
UserID
:
&
userID
,
Key
:
storepb
.
UserSetting
Key
_SHORTCUTS
,
Key
:
storepb
.
UserSetting_SHORTCUTS
,
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
@@ -159,7 +159,7 @@ func (s *APIV1Service) CreateShortcut(ctx context.Context, request *v1pb.CreateS
...
@@ -159,7 +159,7 @@ func (s *APIV1Service) CreateShortcut(ctx context.Context, request *v1pb.CreateS
userSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
userSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
UserID
:
&
userID
,
UserID
:
&
userID
,
Key
:
storepb
.
UserSetting
Key
_SHORTCUTS
,
Key
:
storepb
.
UserSetting_SHORTCUTS
,
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
@@ -167,7 +167,7 @@ func (s *APIV1Service) CreateShortcut(ctx context.Context, request *v1pb.CreateS
...
@@ -167,7 +167,7 @@ func (s *APIV1Service) CreateShortcut(ctx context.Context, request *v1pb.CreateS
if
userSetting
==
nil
{
if
userSetting
==
nil
{
userSetting
=
&
storepb
.
UserSetting
{
userSetting
=
&
storepb
.
UserSetting
{
UserId
:
userID
,
UserId
:
userID
,
Key
:
storepb
.
UserSetting
Key
_SHORTCUTS
,
Key
:
storepb
.
UserSetting_SHORTCUTS
,
Value
:
&
storepb
.
UserSetting_Shortcuts
{
Value
:
&
storepb
.
UserSetting_Shortcuts
{
Shortcuts
:
&
storepb
.
ShortcutsUserSetting
{
Shortcuts
:
&
storepb
.
ShortcutsUserSetting
{
Shortcuts
:
[]
*
storepb
.
ShortcutsUserSetting_Shortcut
{},
Shortcuts
:
[]
*
storepb
.
ShortcutsUserSetting_Shortcut
{},
...
@@ -215,7 +215,7 @@ func (s *APIV1Service) UpdateShortcut(ctx context.Context, request *v1pb.UpdateS
...
@@ -215,7 +215,7 @@ func (s *APIV1Service) UpdateShortcut(ctx context.Context, request *v1pb.UpdateS
userSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
userSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
UserID
:
&
userID
,
UserID
:
&
userID
,
Key
:
storepb
.
UserSetting
Key
_SHORTCUTS
,
Key
:
storepb
.
UserSetting_SHORTCUTS
,
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
@@ -284,7 +284,7 @@ func (s *APIV1Service) DeleteShortcut(ctx context.Context, request *v1pb.DeleteS
...
@@ -284,7 +284,7 @@ func (s *APIV1Service) DeleteShortcut(ctx context.Context, request *v1pb.DeleteS
userSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
userSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
UserID
:
&
userID
,
UserID
:
&
userID
,
Key
:
storepb
.
UserSetting
Key
_SHORTCUTS
,
Key
:
storepb
.
UserSetting_SHORTCUTS
,
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
...
server/router/api/v1/user_service.go
View file @
e6e46049
...
@@ -364,12 +364,13 @@ func (s *APIV1Service) GetUserSetting(ctx context.Context, request *v1pb.GetUser
...
@@ -364,12 +364,13 @@ func (s *APIV1Service) GetUserSetting(ctx context.Context, request *v1pb.GetUser
userSettingMessage
.
Name
=
fmt
.
Sprintf
(
"users/%d"
,
userID
)
userSettingMessage
.
Name
=
fmt
.
Sprintf
(
"users/%d"
,
userID
)
for
_
,
setting
:=
range
userSettings
{
for
_
,
setting
:=
range
userSettings
{
if
setting
.
Key
==
storepb
.
UserSettingKey_LOCALE
{
if
setting
.
Key
==
storepb
.
UserSetting_GENERAL
{
userSettingMessage
.
Locale
=
setting
.
GetLocale
()
general
:=
setting
.
GetGeneral
()
}
else
if
setting
.
Key
==
storepb
.
UserSettingKey_APPEARANCE
{
if
general
!=
nil
{
userSettingMessage
.
Appearance
=
setting
.
GetAppearance
()
userSettingMessage
.
Locale
=
general
.
Locale
}
else
if
setting
.
Key
==
storepb
.
UserSettingKey_MEMO_VISIBILITY
{
userSettingMessage
.
Appearance
=
general
.
Appearance
userSettingMessage
.
MemoVisibility
=
setting
.
GetMemoVisibility
()
userSettingMessage
.
MemoVisibility
=
general
.
MemoVisibility
}
}
}
}
}
return
userSettingMessage
,
nil
return
userSettingMessage
,
nil
...
@@ -396,42 +397,55 @@ func (s *APIV1Service) UpdateUserSetting(ctx context.Context, request *v1pb.Upda
...
@@ -396,42 +397,55 @@ func (s *APIV1Service) UpdateUserSetting(ctx context.Context, request *v1pb.Upda
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"update mask is empty"
)
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"update mask is empty"
)
}
}
// Get the current general setting
existingGeneralSetting
,
err
:=
s
.
Store
.
GetUserSetting
(
ctx
,
&
store
.
FindUserSetting
{
UserID
:
&
userID
,
Key
:
storepb
.
UserSetting_GENERAL
,
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get existing general setting: %v"
,
err
)
}
// Create or update the general setting
generalSetting
:=
&
storepb
.
GeneralUserSetting
{
Locale
:
"en"
,
Appearance
:
"system"
,
MemoVisibility
:
"PRIVATE"
,
}
// If there's an existing setting, use its values as defaults
if
existingGeneralSetting
!=
nil
&&
existingGeneralSetting
.
GetGeneral
()
!=
nil
{
existing
:=
existingGeneralSetting
.
GetGeneral
()
generalSetting
.
Locale
=
existing
.
Locale
generalSetting
.
Appearance
=
existing
.
Appearance
generalSetting
.
MemoVisibility
=
existing
.
MemoVisibility
}
// Apply updates based on the update mask
for
_
,
field
:=
range
request
.
UpdateMask
.
Paths
{
for
_
,
field
:=
range
request
.
UpdateMask
.
Paths
{
if
field
==
"locale"
{
switch
field
{
if
_
,
err
:=
s
.
Store
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
case
"locale"
:
UserId
:
userID
,
generalSetting
.
Locale
=
request
.
Setting
.
Locale
Key
:
storepb
.
UserSettingKey_LOCALE
,
case
"appearance"
:
Value
:
&
storepb
.
UserSetting_Locale
{
generalSetting
.
Appearance
=
request
.
Setting
.
Appearance
Locale
:
request
.
Setting
.
Locale
,
case
"memo_visibility"
:
},
generalSetting
.
MemoVisibility
=
request
.
Setting
.
MemoVisibility
});
err
!=
nil
{
default
:
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to upsert user setting: %v"
,
err
)
}
}
else
if
field
==
"appearance"
{
if
_
,
err
:=
s
.
Store
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
userID
,
Key
:
storepb
.
UserSettingKey_APPEARANCE
,
Value
:
&
storepb
.
UserSetting_Appearance
{
Appearance
:
request
.
Setting
.
Appearance
,
},
});
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to upsert user setting: %v"
,
err
)
}
}
else
if
field
==
"memo_visibility"
{
if
_
,
err
:=
s
.
Store
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
userID
,
Key
:
storepb
.
UserSettingKey_MEMO_VISIBILITY
,
Value
:
&
storepb
.
UserSetting_MemoVisibility
{
MemoVisibility
:
request
.
Setting
.
MemoVisibility
,
},
});
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to upsert user setting: %v"
,
err
)
}
}
else
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid update path: %s"
,
field
)
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid update path: %s"
,
field
)
}
}
}
}
// Upsert the general setting
if
_
,
err
:=
s
.
Store
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
userID
,
Key
:
storepb
.
UserSetting_GENERAL
,
Value
:
&
storepb
.
UserSetting_General
{
General
:
generalSetting
,
},
});
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to upsert user setting: %v"
,
err
)
}
return
s
.
GetUserSetting
(
ctx
,
&
v1pb
.
GetUserSettingRequest
{
Name
:
request
.
Setting
.
Name
})
return
s
.
GetUserSetting
(
ctx
,
&
v1pb
.
GetUserSettingRequest
{
Name
:
request
.
Setting
.
Name
})
}
}
...
@@ -595,7 +609,7 @@ func (s *APIV1Service) DeleteUserAccessToken(ctx context.Context, request *v1pb.
...
@@ -595,7 +609,7 @@ func (s *APIV1Service) DeleteUserAccessToken(ctx context.Context, request *v1pb.
}
}
if
_
,
err
:=
s
.
Store
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
if
_
,
err
:=
s
.
Store
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
currentUser
.
ID
,
UserId
:
currentUser
.
ID
,
Key
:
storepb
.
UserSetting
Key
_ACCESS_TOKENS
,
Key
:
storepb
.
UserSetting_ACCESS_TOKENS
,
Value
:
&
storepb
.
UserSetting_AccessTokens
{
Value
:
&
storepb
.
UserSetting_AccessTokens
{
AccessTokens
:
&
storepb
.
AccessTokensUserSetting
{
AccessTokens
:
&
storepb
.
AccessTokensUserSetting
{
AccessTokens
:
updatedUserAccessTokens
,
AccessTokens
:
updatedUserAccessTokens
,
...
@@ -722,7 +736,7 @@ func (s *APIV1Service) UpsertAccessTokenToStore(ctx context.Context, user *store
...
@@ -722,7 +736,7 @@ func (s *APIV1Service) UpsertAccessTokenToStore(ctx context.Context, user *store
if
_
,
err
:=
s
.
Store
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
if
_
,
err
:=
s
.
Store
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
user
.
ID
,
UserId
:
user
.
ID
,
Key
:
storepb
.
UserSetting
Key
_ACCESS_TOKENS
,
Key
:
storepb
.
UserSetting_ACCESS_TOKENS
,
Value
:
&
storepb
.
UserSetting_AccessTokens
{
Value
:
&
storepb
.
UserSetting_AccessTokens
{
AccessTokens
:
&
storepb
.
AccessTokensUserSetting
{
AccessTokens
:
&
storepb
.
AccessTokensUserSetting
{
AccessTokens
:
userAccessTokens
,
AccessTokens
:
userAccessTokens
,
...
...
store/db/mysql/user_setting.go
View file @
e6e46049
...
@@ -19,7 +19,7 @@ func (d *DB) UpsertUserSetting(ctx context.Context, upsert *store.UserSetting) (
...
@@ -19,7 +19,7 @@ func (d *DB) UpsertUserSetting(ctx context.Context, upsert *store.UserSetting) (
func
(
d
*
DB
)
ListUserSettings
(
ctx
context
.
Context
,
find
*
store
.
FindUserSetting
)
([]
*
store
.
UserSetting
,
error
)
{
func
(
d
*
DB
)
ListUserSettings
(
ctx
context
.
Context
,
find
*
store
.
FindUserSetting
)
([]
*
store
.
UserSetting
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
any
{}
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
any
{}
if
v
:=
find
.
Key
;
v
!=
storepb
.
UserSetting
Key_USER_SETTING
_KEY_UNSPECIFIED
{
if
v
:=
find
.
Key
;
v
!=
storepb
.
UserSetting_KEY_UNSPECIFIED
{
where
,
args
=
append
(
where
,
"`key` = ?"
),
append
(
args
,
v
.
String
())
where
,
args
=
append
(
where
,
"`key` = ?"
),
append
(
args
,
v
.
String
())
}
}
if
v
:=
find
.
UserID
;
v
!=
nil
{
if
v
:=
find
.
UserID
;
v
!=
nil
{
...
@@ -44,7 +44,7 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
...
@@ -44,7 +44,7 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
);
err
!=
nil
{
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
userSetting
.
Key
=
storepb
.
UserSetting
Key
(
storepb
.
UserSetting
Key_value
[
keyString
])
userSetting
.
Key
=
storepb
.
UserSetting
_Key
(
storepb
.
UserSetting_
Key_value
[
keyString
])
userSettingList
=
append
(
userSettingList
,
userSetting
)
userSettingList
=
append
(
userSettingList
,
userSetting
)
}
}
...
...
store/db/postgres/user_setting.go
View file @
e6e46049
...
@@ -26,7 +26,7 @@ func (d *DB) UpsertUserSetting(ctx context.Context, upsert *store.UserSetting) (
...
@@ -26,7 +26,7 @@ func (d *DB) UpsertUserSetting(ctx context.Context, upsert *store.UserSetting) (
func
(
d
*
DB
)
ListUserSettings
(
ctx
context
.
Context
,
find
*
store
.
FindUserSetting
)
([]
*
store
.
UserSetting
,
error
)
{
func
(
d
*
DB
)
ListUserSettings
(
ctx
context
.
Context
,
find
*
store
.
FindUserSetting
)
([]
*
store
.
UserSetting
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
any
{}
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
any
{}
if
v
:=
find
.
Key
;
v
!=
storepb
.
UserSetting
Key_USER_SETTING
_KEY_UNSPECIFIED
{
if
v
:=
find
.
Key
;
v
!=
storepb
.
UserSetting_KEY_UNSPECIFIED
{
where
,
args
=
append
(
where
,
"key = "
+
placeholder
(
len
(
args
)
+
1
)),
append
(
args
,
v
.
String
())
where
,
args
=
append
(
where
,
"key = "
+
placeholder
(
len
(
args
)
+
1
)),
append
(
args
,
v
.
String
())
}
}
if
v
:=
find
.
UserID
;
v
!=
nil
{
if
v
:=
find
.
UserID
;
v
!=
nil
{
...
@@ -57,7 +57,7 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
...
@@ -57,7 +57,7 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
);
err
!=
nil
{
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
userSetting
.
Key
=
storepb
.
UserSetting
Key
(
storepb
.
UserSetting
Key_value
[
keyString
])
userSetting
.
Key
=
storepb
.
UserSetting
_Key
(
storepb
.
UserSetting_
Key_value
[
keyString
])
userSettingList
=
append
(
userSettingList
,
userSetting
)
userSettingList
=
append
(
userSettingList
,
userSetting
)
}
}
...
...
store/db/sqlite/user_setting.go
View file @
e6e46049
...
@@ -26,7 +26,7 @@ func (d *DB) UpsertUserSetting(ctx context.Context, upsert *store.UserSetting) (
...
@@ -26,7 +26,7 @@ func (d *DB) UpsertUserSetting(ctx context.Context, upsert *store.UserSetting) (
func
(
d
*
DB
)
ListUserSettings
(
ctx
context
.
Context
,
find
*
store
.
FindUserSetting
)
([]
*
store
.
UserSetting
,
error
)
{
func
(
d
*
DB
)
ListUserSettings
(
ctx
context
.
Context
,
find
*
store
.
FindUserSetting
)
([]
*
store
.
UserSetting
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
any
{}
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
any
{}
if
v
:=
find
.
Key
;
v
!=
storepb
.
UserSetting
Key_USER_SETTING
_KEY_UNSPECIFIED
{
if
v
:=
find
.
Key
;
v
!=
storepb
.
UserSetting_KEY_UNSPECIFIED
{
where
,
args
=
append
(
where
,
"key = ?"
),
append
(
args
,
v
.
String
())
where
,
args
=
append
(
where
,
"key = ?"
),
append
(
args
,
v
.
String
())
}
}
if
v
:=
find
.
UserID
;
v
!=
nil
{
if
v
:=
find
.
UserID
;
v
!=
nil
{
...
@@ -57,7 +57,7 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
...
@@ -57,7 +57,7 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
);
err
!=
nil
{
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
userSetting
.
Key
=
storepb
.
UserSetting
Key
(
storepb
.
UserSetting
Key_value
[
keyString
])
userSetting
.
Key
=
storepb
.
UserSetting
_Key
(
storepb
.
UserSetting_
Key_value
[
keyString
])
userSettingList
=
append
(
userSettingList
,
userSetting
)
userSettingList
=
append
(
userSettingList
,
userSetting
)
}
}
if
err
:=
rows
.
Err
();
err
!=
nil
{
if
err
:=
rows
.
Err
();
err
!=
nil
{
...
...
store/test/user_setting_test.go
View file @
e6e46049
...
@@ -17,8 +17,8 @@ func TestUserSettingStore(t *testing.T) {
...
@@ -17,8 +17,8 @@ func TestUserSettingStore(t *testing.T) {
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
_
,
err
=
ts
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
_
,
err
=
ts
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
user
.
ID
,
UserId
:
user
.
ID
,
Key
:
storepb
.
UserSetting
Key_LOCALE
,
Key
:
storepb
.
UserSetting
_GENERAL
,
Value
:
&
storepb
.
UserSetting_
Locale
{
Locale
:
"en"
},
Value
:
&
storepb
.
UserSetting_
General
{
General
:
&
storepb
.
GeneralUserSetting
{
Locale
:
"en"
}
},
})
})
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
list
,
err
:=
ts
.
ListUserSettings
(
ctx
,
&
store
.
FindUserSetting
{})
list
,
err
:=
ts
.
ListUserSettings
(
ctx
,
&
store
.
FindUserSetting
{})
...
...
store/user_setting.go
View file @
e6e46049
...
@@ -12,13 +12,13 @@ import (
...
@@ -12,13 +12,13 @@ import (
type
UserSetting
struct
{
type
UserSetting
struct
{
UserID
int32
UserID
int32
Key
storepb
.
UserSettingKey
Key
storepb
.
UserSetting
_
Key
Value
string
Value
string
}
}
type
FindUserSetting
struct
{
type
FindUserSetting
struct
{
UserID
*
int32
UserID
*
int32
Key
storepb
.
UserSettingKey
Key
storepb
.
UserSetting
_
Key
}
}
func
(
s
*
Store
)
UpsertUserSetting
(
ctx
context
.
Context
,
upsert
*
storepb
.
UserSetting
)
(
*
storepb
.
UserSetting
,
error
)
{
func
(
s
*
Store
)
UpsertUserSetting
(
ctx
context
.
Context
,
upsert
*
storepb
.
UserSetting
)
(
*
storepb
.
UserSetting
,
error
)
{
...
@@ -93,7 +93,7 @@ func (s *Store) GetUserSetting(ctx context.Context, find *FindUserSetting) (*sto
...
@@ -93,7 +93,7 @@ func (s *Store) GetUserSetting(ctx context.Context, find *FindUserSetting) (*sto
func
(
s
*
Store
)
GetUserAccessTokens
(
ctx
context
.
Context
,
userID
int32
)
([]
*
storepb
.
AccessTokensUserSetting_AccessToken
,
error
)
{
func
(
s
*
Store
)
GetUserAccessTokens
(
ctx
context
.
Context
,
userID
int32
)
([]
*
storepb
.
AccessTokensUserSetting_AccessToken
,
error
)
{
userSetting
,
err
:=
s
.
GetUserSetting
(
ctx
,
&
FindUserSetting
{
userSetting
,
err
:=
s
.
GetUserSetting
(
ctx
,
&
FindUserSetting
{
UserID
:
&
userID
,
UserID
:
&
userID
,
Key
:
storepb
.
UserSetting
Key
_ACCESS_TOKENS
,
Key
:
storepb
.
UserSetting_ACCESS_TOKENS
,
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
@@ -122,7 +122,7 @@ func (s *Store) RemoveUserAccessToken(ctx context.Context, userID int32, token s
...
@@ -122,7 +122,7 @@ func (s *Store) RemoveUserAccessToken(ctx context.Context, userID int32, token s
_
,
err
=
s
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
_
,
err
=
s
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
userID
,
UserId
:
userID
,
Key
:
storepb
.
UserSetting
Key
_ACCESS_TOKENS
,
Key
:
storepb
.
UserSetting_ACCESS_TOKENS
,
Value
:
&
storepb
.
UserSetting_AccessTokens
{
Value
:
&
storepb
.
UserSetting_AccessTokens
{
AccessTokens
:
&
storepb
.
AccessTokensUserSetting
{
AccessTokens
:
&
storepb
.
AccessTokensUserSetting
{
AccessTokens
:
newAccessTokens
,
AccessTokens
:
newAccessTokens
,
...
@@ -137,7 +137,7 @@ func (s *Store) RemoveUserAccessToken(ctx context.Context, userID int32, token s
...
@@ -137,7 +137,7 @@ func (s *Store) RemoveUserAccessToken(ctx context.Context, userID int32, token s
func
(
s
*
Store
)
GetUserSessions
(
ctx
context
.
Context
,
userID
int32
)
([]
*
storepb
.
SessionsUserSetting_Session
,
error
)
{
func
(
s
*
Store
)
GetUserSessions
(
ctx
context
.
Context
,
userID
int32
)
([]
*
storepb
.
SessionsUserSetting_Session
,
error
)
{
userSetting
,
err
:=
s
.
GetUserSetting
(
ctx
,
&
FindUserSetting
{
userSetting
,
err
:=
s
.
GetUserSetting
(
ctx
,
&
FindUserSetting
{
UserID
:
&
userID
,
UserID
:
&
userID
,
Key
:
storepb
.
UserSetting
Key
_SESSIONS
,
Key
:
storepb
.
UserSetting_SESSIONS
,
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
@@ -166,7 +166,7 @@ func (s *Store) RemoveUserSession(ctx context.Context, userID int32, sessionID s
...
@@ -166,7 +166,7 @@ func (s *Store) RemoveUserSession(ctx context.Context, userID int32, sessionID s
_
,
err
=
s
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
_
,
err
=
s
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
userID
,
UserId
:
userID
,
Key
:
storepb
.
UserSetting
Key
_SESSIONS
,
Key
:
storepb
.
UserSetting_SESSIONS
,
Value
:
&
storepb
.
UserSetting_Sessions
{
Value
:
&
storepb
.
UserSetting_Sessions
{
Sessions
:
&
storepb
.
SessionsUserSetting
{
Sessions
:
&
storepb
.
SessionsUserSetting
{
Sessions
:
newSessions
,
Sessions
:
newSessions
,
...
@@ -203,7 +203,7 @@ func (s *Store) AddUserSession(ctx context.Context, userID int32, session *store
...
@@ -203,7 +203,7 @@ func (s *Store) AddUserSession(ctx context.Context, userID int32, session *store
_
,
err
=
s
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
_
,
err
=
s
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
userID
,
UserId
:
userID
,
Key
:
storepb
.
UserSetting
Key
_SESSIONS
,
Key
:
storepb
.
UserSetting_SESSIONS
,
Value
:
&
storepb
.
UserSetting_Sessions
{
Value
:
&
storepb
.
UserSetting_Sessions
{
Sessions
:
&
storepb
.
SessionsUserSetting
{
Sessions
:
&
storepb
.
SessionsUserSetting
{
Sessions
:
updatedSessions
,
Sessions
:
updatedSessions
,
...
@@ -230,7 +230,7 @@ func (s *Store) UpdateUserSessionLastAccessed(ctx context.Context, userID int32,
...
@@ -230,7 +230,7 @@ func (s *Store) UpdateUserSessionLastAccessed(ctx context.Context, userID int32,
_
,
err
=
s
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
_
,
err
=
s
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
userID
,
UserId
:
userID
,
Key
:
storepb
.
UserSetting
Key
_SESSIONS
,
Key
:
storepb
.
UserSetting_SESSIONS
,
Value
:
&
storepb
.
UserSetting_Sessions
{
Value
:
&
storepb
.
UserSetting_Sessions
{
Sessions
:
&
storepb
.
SessionsUserSetting
{
Sessions
:
&
storepb
.
SessionsUserSetting
{
Sessions
:
sessions
,
Sessions
:
sessions
,
...
@@ -248,30 +248,30 @@ func convertUserSettingFromRaw(raw *UserSetting) (*storepb.UserSetting, error) {
...
@@ -248,30 +248,30 @@ func convertUserSettingFromRaw(raw *UserSetting) (*storepb.UserSetting, error) {
}
}
switch
raw
.
Key
{
switch
raw
.
Key
{
case
storepb
.
UserSetting
Key
_ACCESS_TOKENS
:
case
storepb
.
UserSetting_ACCESS_TOKENS
:
accessTokensUserSetting
:=
&
storepb
.
AccessTokensUserSetting
{}
accessTokensUserSetting
:=
&
storepb
.
AccessTokensUserSetting
{}
if
err
:=
protojsonUnmarshaler
.
Unmarshal
([]
byte
(
raw
.
Value
),
accessTokensUserSetting
);
err
!=
nil
{
if
err
:=
protojsonUnmarshaler
.
Unmarshal
([]
byte
(
raw
.
Value
),
accessTokensUserSetting
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
userSetting
.
Value
=
&
storepb
.
UserSetting_AccessTokens
{
AccessTokens
:
accessTokensUserSetting
}
userSetting
.
Value
=
&
storepb
.
UserSetting_AccessTokens
{
AccessTokens
:
accessTokensUserSetting
}
case
storepb
.
UserSetting
Key
_SESSIONS
:
case
storepb
.
UserSetting_SESSIONS
:
sessionsUserSetting
:=
&
storepb
.
SessionsUserSetting
{}
sessionsUserSetting
:=
&
storepb
.
SessionsUserSetting
{}
if
err
:=
protojsonUnmarshaler
.
Unmarshal
([]
byte
(
raw
.
Value
),
sessionsUserSetting
);
err
!=
nil
{
if
err
:=
protojsonUnmarshaler
.
Unmarshal
([]
byte
(
raw
.
Value
),
sessionsUserSetting
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
userSetting
.
Value
=
&
storepb
.
UserSetting_Sessions
{
Sessions
:
sessionsUserSetting
}
userSetting
.
Value
=
&
storepb
.
UserSetting_Sessions
{
Sessions
:
sessionsUserSetting
}
case
storepb
.
UserSetting
Key
_SHORTCUTS
:
case
storepb
.
UserSetting_SHORTCUTS
:
shortcutsUserSetting
:=
&
storepb
.
ShortcutsUserSetting
{}
shortcutsUserSetting
:=
&
storepb
.
ShortcutsUserSetting
{}
if
err
:=
protojsonUnmarshaler
.
Unmarshal
([]
byte
(
raw
.
Value
),
shortcutsUserSetting
);
err
!=
nil
{
if
err
:=
protojsonUnmarshaler
.
Unmarshal
([]
byte
(
raw
.
Value
),
shortcutsUserSetting
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
userSetting
.
Value
=
&
storepb
.
UserSetting_Shortcuts
{
Shortcuts
:
shortcutsUserSetting
}
userSetting
.
Value
=
&
storepb
.
UserSetting_Shortcuts
{
Shortcuts
:
shortcutsUserSetting
}
case
storepb
.
UserSetting
Key_LOCALE
:
case
storepb
.
UserSetting
_GENERAL
:
userSetting
.
Value
=
&
storepb
.
UserSetting_Locale
{
Locale
:
raw
.
Value
}
generalUserSetting
:=
&
storepb
.
GeneralUserSetting
{
}
case
storepb
.
UserSettingKey_APPEARANCE
:
if
err
:=
protojsonUnmarshaler
.
Unmarshal
([]
byte
(
raw
.
Value
),
generalUserSetting
);
err
!=
nil
{
userSetting
.
Value
=
&
storepb
.
UserSetting_Appearance
{
Appearance
:
raw
.
Value
}
return
nil
,
err
case
storepb
.
UserSettingKey_MEMO_VISIBILITY
:
}
userSetting
.
Value
=
&
storepb
.
UserSetting_
MemoVisibility
{
MemoVisibility
:
raw
.
Value
}
userSetting
.
Value
=
&
storepb
.
UserSetting_
General
{
General
:
generalUserSetting
}
default
:
default
:
return
nil
,
nil
return
nil
,
nil
}
}
...
@@ -285,33 +285,34 @@ func convertUserSettingToRaw(userSetting *storepb.UserSetting) (*UserSetting, er
...
@@ -285,33 +285,34 @@ func convertUserSettingToRaw(userSetting *storepb.UserSetting) (*UserSetting, er
}
}
switch
userSetting
.
Key
{
switch
userSetting
.
Key
{
case
storepb
.
UserSetting
Key
_ACCESS_TOKENS
:
case
storepb
.
UserSetting_ACCESS_TOKENS
:
accessTokensUserSetting
:=
userSetting
.
GetAccessTokens
()
accessTokensUserSetting
:=
userSetting
.
GetAccessTokens
()
value
,
err
:=
protojson
.
Marshal
(
accessTokensUserSetting
)
value
,
err
:=
protojson
.
Marshal
(
accessTokensUserSetting
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
raw
.
Value
=
string
(
value
)
raw
.
Value
=
string
(
value
)
case
storepb
.
UserSetting
Key
_SESSIONS
:
case
storepb
.
UserSetting_SESSIONS
:
sessionsUserSetting
:=
userSetting
.
GetSessions
()
sessionsUserSetting
:=
userSetting
.
GetSessions
()
value
,
err
:=
protojson
.
Marshal
(
sessionsUserSetting
)
value
,
err
:=
protojson
.
Marshal
(
sessionsUserSetting
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
raw
.
Value
=
string
(
value
)
raw
.
Value
=
string
(
value
)
case
storepb
.
UserSetting
Key
_SHORTCUTS
:
case
storepb
.
UserSetting_SHORTCUTS
:
shortcutsUserSetting
:=
userSetting
.
GetShortcuts
()
shortcutsUserSetting
:=
userSetting
.
GetShortcuts
()
value
,
err
:=
protojson
.
Marshal
(
shortcutsUserSetting
)
value
,
err
:=
protojson
.
Marshal
(
shortcutsUserSetting
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
raw
.
Value
=
string
(
value
)
raw
.
Value
=
string
(
value
)
case
storepb
.
UserSettingKey_LOCALE
:
case
storepb
.
UserSetting_GENERAL
:
raw
.
Value
=
userSetting
.
GetLocale
()
generalUserSetting
:=
userSetting
.
GetGeneral
()
case
storepb
.
UserSettingKey_APPEARANCE
:
value
,
err
:=
protojson
.
Marshal
(
generalUserSetting
)
raw
.
Value
=
userSetting
.
GetAppearance
()
if
err
!=
nil
{
case
storepb
.
UserSettingKey_MEMO_VISIBILITY
:
return
nil
,
err
raw
.
Value
=
userSetting
.
GetMemoVisibility
()
}
raw
.
Value
=
string
(
value
)
default
:
default
:
return
nil
,
errors
.
Errorf
(
"unsupported user setting key: %v"
,
userSetting
.
Key
)
return
nil
,
errors
.
Errorf
(
"unsupported user setting key: %v"
,
userSetting
.
Key
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment