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
21f18f7c
Commit
21f18f7c
authored
Aug 01, 2024
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: tweak activity service definition
parent
cc91b1e5
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
259 additions
and
233 deletions
+259
-233
apidocs.swagger.yaml
docs/apidocs.swagger.yaml
+58
-56
activity_service.proto
proto/api/v1/activity_service.proto
+14
-12
activity_service.pb.go
proto/gen/api/v1/activity_service.pb.go
+133
-130
activity_service.pb.gw.go
proto/gen/api/v1/activity_service.pb.gw.go
+11
-11
activity_service.go
server/router/api/v1/activity_service.go
+7
-2
resource_name.go
server/router/api/v1/resource_name.go
+13
-0
MemoCommentMessage.tsx
web/src/components/Inbox/MemoCommentMessage.tsx
+2
-2
VersionUpdateMessage.tsx
web/src/components/Inbox/VersionUpdateMessage.tsx
+2
-2
MemoRelatedSettings.tsx
web/src/components/Settings/MemoRelatedSettings.tsx
+2
-2
StorageSection.tsx
web/src/components/Settings/StorageSection.tsx
+2
-2
WorkspaceSection.tsx
web/src/components/Settings/WorkspaceSection.tsx
+3
-3
UpdateAccountDialog.tsx
web/src/components/UpdateAccountDialog.tsx
+2
-2
UpdateCustomizedProfileDialog.tsx
web/src/components/UpdateCustomizedProfileDialog.tsx
+2
-2
resourceName.ts
web/src/store/v1/resourceName.ts
+5
-4
workspaceSetting.ts
web/src/store/v1/workspaceSetting.ts
+3
-3
No files found.
docs/apidocs.swagger.yaml
View file @
21f18f7c
...
...
@@ -19,28 +19,6 @@ consumes:
produces
:
-
application/json
paths
:
/api/v1/activities/{id}
:
get
:
summary
:
GetActivity returns the activity with the given id.
operationId
:
ActivityService_GetActivity
responses
:
"
200"
:
description
:
A successful response.
schema
:
$ref
:
'
#/definitions/v1Activity'
default
:
description
:
An unexpected error response.
schema
:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
id
description
:
The system-generated unique identifier for the activity.
in
:
path
required
:
true
type
:
integer
format
:
int32
tags
:
-
ActivityService
/api/v1/auth/signin
:
post
:
summary
:
SignIn signs in the user with the given username and password.
...
...
@@ -925,13 +903,13 @@ paths:
-
MemoService
/api/v1/{name_1}
:
get
:
summary
:
Get
IdentityProvider gets an identity provider
.
operationId
:
IdentityProviderService_GetIdentityProvid
er
summary
:
Get
User gets a user by name
.
operationId
:
UserService_GetUs
er
responses
:
"
200"
:
description
:
A successful response.
schema
:
$ref
:
'
#/definitions/
apiv1IdentityProvid
er'
$ref
:
'
#/definitions/
v1Us
er'
default
:
description
:
An unexpected error response.
schema
:
...
...
@@ -939,14 +917,14 @@ paths:
parameters
:
-
name
:
name_1
description
:
|-
The name of the
identityProvider to get
.
Format:
identityProvid
ers/{id}
The name of the
user
.
Format:
us
ers/{id}
in: path
required: true
type: string
pattern:
identityProvid
ers/[^/]+
pattern:
us
ers/[^/]+
tags
:
-
IdentityProvid
erService
-
Us
erService
delete
:
summary
:
DeleteIdentityProvider deletes an identity provider.
operationId
:
IdentityProviderService_DeleteIdentityProvider
...
...
@@ -973,13 +951,13 @@ paths:
-
IdentityProviderService
/api/v1/{name_2}
:
get
:
summary
:
Get
Resource returns a resource by name
.
operationId
:
ResourceService_GetResource
summary
:
Get
IdentityProvider gets an identity provider
.
operationId
:
IdentityProviderService_GetIdentityProvider
responses
:
"
200"
:
description
:
A successful response.
schema
:
$ref
:
'
#/definitions/
v1Resource
'
$ref
:
'
#/definitions/
apiv1IdentityProvider
'
default
:
description
:
An unexpected error response.
schema
:
...
...
@@ -987,15 +965,14 @@ paths:
parameters
:
-
name
:
name_2
description
:
|-
The name of the resource.
Format: resources/{id}
id is the system generated unique identifier.
The name of the identityProvider to get.
Format: identityProviders/{id}
in: path
required: true
type: string
pattern:
resource
s/[^/]+
pattern:
identityProvider
s/[^/]+
tags
:
-
Resource
Service
-
IdentityProvider
Service
delete
:
summary
:
DeleteInbox deletes an inbox.
operationId
:
InboxService_DeleteInbox
...
...
@@ -1022,13 +999,13 @@ paths:
-
InboxService
/api/v1/{name_3}
:
get
:
summary
:
Get
Memo gets a memo
.
operationId
:
MemoService_GetMemo
summary
:
Get
Resource returns a resource by name
.
operationId
:
ResourceService_GetResource
responses
:
"
200"
:
description
:
A successful response.
schema
:
$ref
:
'
#/definitions/v1
Memo
'
$ref
:
'
#/definitions/v1
Resource
'
default
:
description
:
An unexpected error response.
schema
:
...
...
@@ -1036,14 +1013,15 @@ paths:
parameters
:
-
name
:
name_3
description
:
|-
The name of the memo.
Format: memos/{id}
The name of the resource.
Format: resources/{id}
id is the system generated unique identifier.
in: path
required: true
type: string
pattern:
memo
s/[^/]+
pattern:
resource
s/[^/]+
tags
:
-
Memo
Service
-
Resource
Service
delete
:
summary
:
DeleteResource deletes a resource by name.
operationId
:
ResourceService_DeleteResource
...
...
@@ -1070,6 +1048,29 @@ paths:
tags
:
-
ResourceService
/api/v1/{name_4}
:
get
:
summary
:
GetMemo gets a memo.
operationId
:
MemoService_GetMemo
responses
:
"
200"
:
description
:
A successful response.
schema
:
$ref
:
'
#/definitions/v1Memo'
default
:
description
:
An unexpected error response.
schema
:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_4
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
pattern: memos/[^/]+
tags
:
-
MemoService
delete
:
summary
:
DeleteMemo deletes a memo.
operationId
:
MemoService_DeleteMemo
...
...
@@ -1096,13 +1097,13 @@ paths:
-
MemoService
/api/v1/{name}
:
get
:
summary
:
Get
User gets a user by name
.
operationId
:
UserService_GetUser
summary
:
Get
Activity returns the activity with the given id
.
operationId
:
ActivityService_GetActivity
responses
:
"
200"
:
description
:
A successful response.
schema
:
$ref
:
'
#/definitions/v1
User
'
$ref
:
'
#/definitions/v1
Activity
'
default
:
description
:
An unexpected error response.
schema
:
...
...
@@ -1110,14 +1111,14 @@ paths:
parameters
:
-
name
:
name
description
:
|-
The name of the
user
.
Format:
user
s/{id}
The name of the
activity
.
Format:
activitie
s/{id}
in: path
required: true
type: string
pattern:
user
s/[^/]+
pattern:
activitie
s/[^/]+
tags
:
-
User
Service
-
Activity
Service
delete
:
summary
:
DeleteUser deletes a user.
operationId
:
UserService_DeleteUser
...
...
@@ -2277,14 +2278,15 @@ definitions:
v1Activity
:
type
:
object
properties
:
id
:
type
:
integer
format
:
int32
description
:
The system-generated unique identifier for the activity.
name
:
type
:
string
title
:
|-
The name of the activity.
Format: activities/{id}
creatorId
:
type
:
integer
format
:
int32
description
:
The
system-generated unique identifier for
the user who created the activity.
description
:
The
uid of
the user who created the activity.
type
:
type
:
string
description
:
The type of the activity.
...
...
proto/api/v1/activity_service.proto
View file @
21f18f7c
...
...
@@ -12,15 +12,16 @@ option go_package = "gen/api/v1";
service
ActivityService
{
// GetActivity returns the activity with the given id.
rpc
GetActivity
(
GetActivityRequest
)
returns
(
Activity
)
{
option
(
google.api.http
)
=
{
get
:
"/api/v1/
activities/{id
}"
};
option
(
google.api.method_signature
)
=
"
id
"
;
option
(
google.api.http
)
=
{
get
:
"/api/v1/
{name=activities/*
}"
};
option
(
google.api.method_signature
)
=
"
name
"
;
}
}
message
Activity
{
// The system-generated unique identifier for the activity.
int32
id
=
1
;
// The system-generated unique identifier for the user who created the activity.
// The name of the activity.
// Format: activities/{id}
string
name
=
1
;
// The uid of the user who created the activity.
int32
creator_id
=
2
;
// The type of the activity.
string
type
=
3
;
...
...
@@ -32,6 +33,11 @@ message Activity {
ActivityPayload
payload
=
6
;
}
message
ActivityPayload
{
ActivityMemoCommentPayload
memo_comment
=
1
;
ActivityVersionUpdatePayload
version_update
=
2
;
}
// ActivityMemoCommentPayload represents the payload of a memo comment activity.
message
ActivityMemoCommentPayload
{
// The memo id of comment.
...
...
@@ -45,12 +51,8 @@ message ActivityVersionUpdatePayload {
string
version
=
1
;
}
message
ActivityPayload
{
ActivityMemoCommentPayload
memo_comment
=
1
;
ActivityVersionUpdatePayload
version_update
=
2
;
}
message
GetActivityRequest
{
// The system-generated unique identifier for the activity.
int32
id
=
1
;
// The name of the activity.
// Format: activities/{id}
string
name
=
1
;
}
proto/gen/api/v1/activity_service.pb.go
View file @
21f18f7c
...
...
@@ -27,9 +27,10 @@ type Activity struct {
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
// The system-generated unique identifier for the activity.
Id
int32
`protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
// The system-generated unique identifier for the user who created the activity.
// The name of the activity.
// Format: activities/{id}
Name
string
`protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// The uid of the user who created the activity.
CreatorId
int32
`protobuf:"varint,2,opt,name=creator_id,json=creatorId,proto3" json:"creator_id,omitempty"`
// The type of the activity.
Type
string
`protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
...
...
@@ -73,11 +74,11 @@ func (*Activity) Descriptor() ([]byte, []int) {
return
file_api_v1_activity_service_proto_rawDescGZIP
(),
[]
int
{
0
}
}
func
(
x
*
Activity
)
Get
Id
()
int32
{
func
(
x
*
Activity
)
Get
Name
()
string
{
if
x
!=
nil
{
return
x
.
Id
return
x
.
Name
}
return
0
return
""
}
func
(
x
*
Activity
)
GetCreatorId
()
int32
{
...
...
@@ -115,20 +116,17 @@ func (x *Activity) GetPayload() *ActivityPayload {
return
nil
}
// ActivityMemoCommentPayload represents the payload of a memo comment activity.
type
ActivityMemoCommentPayload
struct
{
type
ActivityPayload
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
// The memo id of comment.
MemoId
int32
`protobuf:"varint,1,opt,name=memo_id,json=memoId,proto3" json:"memo_id,omitempty"`
// The memo id of related memo.
RelatedMemoId
int32
`protobuf:"varint,2,opt,name=related_memo_id,json=relatedMemoId,proto3" json:"related_memo_id,omitempty"`
MemoComment
*
ActivityMemoCommentPayload
`protobuf:"bytes,1,opt,name=memo_comment,json=memoComment,proto3" json:"memo_comment,omitempty"`
VersionUpdate
*
ActivityVersionUpdatePayload
`protobuf:"bytes,2,opt,name=version_update,json=versionUpdate,proto3" json:"version_update,omitempty"`
}
func
(
x
*
Activity
MemoComment
Payload
)
Reset
()
{
*
x
=
Activity
MemoComment
Payload
{}
func
(
x
*
ActivityPayload
)
Reset
()
{
*
x
=
ActivityPayload
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_api_v1_activity_service_proto_msgTypes
[
1
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
...
...
@@ -136,13 +134,13 @@ func (x *ActivityMemoCommentPayload) Reset() {
}
}
func
(
x
*
Activity
MemoComment
Payload
)
String
()
string
{
func
(
x
*
ActivityPayload
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
Activity
MemoComment
Payload
)
ProtoMessage
()
{}
func
(
*
ActivityPayload
)
ProtoMessage
()
{}
func
(
x
*
Activity
MemoComment
Payload
)
ProtoReflect
()
protoreflect
.
Message
{
func
(
x
*
ActivityPayload
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_api_v1_activity_service_proto_msgTypes
[
1
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
...
...
@@ -154,36 +152,39 @@ func (x *ActivityMemoCommentPayload) ProtoReflect() protoreflect.Message {
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use Activity
MemoComment
Payload.ProtoReflect.Descriptor instead.
func
(
*
Activity
MemoComment
Payload
)
Descriptor
()
([]
byte
,
[]
int
)
{
// Deprecated: Use ActivityPayload.ProtoReflect.Descriptor instead.
func
(
*
ActivityPayload
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_api_v1_activity_service_proto_rawDescGZIP
(),
[]
int
{
1
}
}
func
(
x
*
Activity
MemoCommentPayload
)
GetMemoId
()
int32
{
func
(
x
*
Activity
Payload
)
GetMemoComment
()
*
ActivityMemoCommentPayload
{
if
x
!=
nil
{
return
x
.
Memo
Id
return
x
.
Memo
Comment
}
return
0
return
nil
}
func
(
x
*
Activity
MemoCommentPayload
)
GetRelatedMemoId
()
int32
{
func
(
x
*
Activity
Payload
)
GetVersionUpdate
()
*
ActivityVersionUpdatePayload
{
if
x
!=
nil
{
return
x
.
RelatedMemoId
return
x
.
VersionUpdate
}
return
0
return
nil
}
type
ActivityVersionUpdatePayload
struct
{
// ActivityMemoCommentPayload represents the payload of a memo comment activity.
type
ActivityMemoCommentPayload
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
// The updated version of memos.
Version
string
`protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
// The memo id of comment.
MemoId
int32
`protobuf:"varint,1,opt,name=memo_id,json=memoId,proto3" json:"memo_id,omitempty"`
// The memo id of related memo.
RelatedMemoId
int32
`protobuf:"varint,2,opt,name=related_memo_id,json=relatedMemoId,proto3" json:"related_memo_id,omitempty"`
}
func
(
x
*
Activity
VersionUpdate
Payload
)
Reset
()
{
*
x
=
Activity
VersionUpdate
Payload
{}
func
(
x
*
Activity
MemoComment
Payload
)
Reset
()
{
*
x
=
Activity
MemoComment
Payload
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_api_v1_activity_service_proto_msgTypes
[
2
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
...
...
@@ -191,13 +192,13 @@ func (x *ActivityVersionUpdatePayload) Reset() {
}
}
func
(
x
*
Activity
VersionUpdate
Payload
)
String
()
string
{
func
(
x
*
Activity
MemoComment
Payload
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
Activity
VersionUpdate
Payload
)
ProtoMessage
()
{}
func
(
*
Activity
MemoComment
Payload
)
ProtoMessage
()
{}
func
(
x
*
Activity
VersionUpdate
Payload
)
ProtoReflect
()
protoreflect
.
Message
{
func
(
x
*
Activity
MemoComment
Payload
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_api_v1_activity_service_proto_msgTypes
[
2
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
...
...
@@ -209,29 +210,36 @@ func (x *ActivityVersionUpdatePayload) ProtoReflect() protoreflect.Message {
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use Activity
VersionUpdate
Payload.ProtoReflect.Descriptor instead.
func
(
*
Activity
VersionUpdate
Payload
)
Descriptor
()
([]
byte
,
[]
int
)
{
// Deprecated: Use Activity
MemoComment
Payload.ProtoReflect.Descriptor instead.
func
(
*
Activity
MemoComment
Payload
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_api_v1_activity_service_proto_rawDescGZIP
(),
[]
int
{
2
}
}
func
(
x
*
Activity
VersionUpdatePayload
)
GetVersion
()
string
{
func
(
x
*
Activity
MemoCommentPayload
)
GetMemoId
()
int32
{
if
x
!=
nil
{
return
x
.
Version
return
x
.
MemoId
}
return
""
return
0
}
type
ActivityPayload
struct
{
func
(
x
*
ActivityMemoCommentPayload
)
GetRelatedMemoId
()
int32
{
if
x
!=
nil
{
return
x
.
RelatedMemoId
}
return
0
}
type
ActivityVersionUpdatePayload
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
MemoComment
*
ActivityMemoCommentPayload
`protobuf:"bytes,1,opt,name=memo_comment,json=memoComment,proto3" json:"memo_comment,omitempty"`
Version
Update
*
ActivityVersionUpdatePayload
`protobuf:"bytes,2,opt,name=version_update,json=versionUpdate,proto3" json:"version_update
,omitempty"`
// The updated version of memos.
Version
string
`protobuf:"bytes,1,opt,name=version,proto3" json:"version
,omitempty"`
}
func
(
x
*
ActivityPayload
)
Reset
()
{
*
x
=
ActivityPayload
{}
func
(
x
*
Activity
VersionUpdate
Payload
)
Reset
()
{
*
x
=
Activity
VersionUpdate
Payload
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_api_v1_activity_service_proto_msgTypes
[
3
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
...
...
@@ -239,13 +247,13 @@ func (x *ActivityPayload) Reset() {
}
}
func
(
x
*
ActivityPayload
)
String
()
string
{
func
(
x
*
Activity
VersionUpdate
Payload
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
ActivityPayload
)
ProtoMessage
()
{}
func
(
*
Activity
VersionUpdate
Payload
)
ProtoMessage
()
{}
func
(
x
*
ActivityPayload
)
ProtoReflect
()
protoreflect
.
Message
{
func
(
x
*
Activity
VersionUpdate
Payload
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_api_v1_activity_service_proto_msgTypes
[
3
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
...
...
@@ -257,23 +265,16 @@ func (x *ActivityPayload) ProtoReflect() protoreflect.Message {
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use ActivityPayload.ProtoReflect.Descriptor instead.
func
(
*
ActivityPayload
)
Descriptor
()
([]
byte
,
[]
int
)
{
// Deprecated: Use Activity
VersionUpdate
Payload.ProtoReflect.Descriptor instead.
func
(
*
Activity
VersionUpdate
Payload
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_api_v1_activity_service_proto_rawDescGZIP
(),
[]
int
{
3
}
}
func
(
x
*
ActivityPayload
)
GetMemoComment
()
*
ActivityMemoCommentPayload
{
if
x
!=
nil
{
return
x
.
MemoComment
}
return
nil
}
func
(
x
*
ActivityPayload
)
GetVersionUpdate
()
*
ActivityVersionUpdatePayload
{
func
(
x
*
ActivityVersionUpdatePayload
)
GetVersion
()
string
{
if
x
!=
nil
{
return
x
.
Version
Update
return
x
.
Version
}
return
nil
return
""
}
type
GetActivityRequest
struct
{
...
...
@@ -281,8 +282,9 @@ type GetActivityRequest struct {
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
// The system-generated unique identifier for the activity.
Id
int32
`protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
// The name of the activity.
// Format: activities/{id}
Name
string
`protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func
(
x
*
GetActivityRequest
)
Reset
()
{
...
...
@@ -317,11 +319,11 @@ func (*GetActivityRequest) Descriptor() ([]byte, []int) {
return
file_api_v1_activity_service_proto_rawDescGZIP
(),
[]
int
{
4
}
}
func
(
x
*
GetActivityRequest
)
Get
Id
()
int32
{
func
(
x
*
GetActivityRequest
)
Get
Name
()
string
{
if
x
!=
nil
{
return
x
.
Id
return
x
.
Name
}
return
0
return
""
}
var
File_api_v1_activity_service_proto
protoreflect
.
FileDescriptor
...
...
@@ -337,64 +339,65 @@ var file_api_v1_activity_service_proto_rawDesc = []byte{
0x2f
,
0x66
,
0x69
,
0x65
,
0x6c
,
0x64
,
0x5f
,
0x62
,
0x65
,
0x68
,
0x61
,
0x76
,
0x69
,
0x6f
,
0x72
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x1a
,
0x1f
,
0x67
,
0x6f
,
0x6f
,
0x67
,
0x6c
,
0x65
,
0x2f
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x62
,
0x75
,
0x66
,
0x2f
,
0x74
,
0x69
,
0x6d
,
0x65
,
0x73
,
0x74
,
0x61
,
0x6d
,
0x70
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x22
,
0xdf
,
0x01
,
0x0a
,
0x08
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x12
,
0x0e
,
0x0a
,
0x02
,
0x69
,
0x64
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x02
,
0x69
,
0x64
,
0x12
,
0x1d
,
0x0a
,
0x0a
,
0x63
,
0x72
,
0x65
,
0x61
,
0x74
,
0x6f
,
0x72
,
0x5f
,
0x69
,
0x64
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x09
,
0x63
,
0x72
,
0x65
,
0x61
,
0x74
,
0x6f
,
0x72
,
0x49
,
0x64
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x74
,
0x79
,
0x70
,
0x65
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x04
,
0x74
,
0x79
,
0x70
,
0x65
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x18
,
0x04
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x12
,
0x41
,
0x0a
,
0x0b
,
0x63
,
0x72
,
0x65
,
0x61
,
0x74
,
0x65
,
0x5f
,
0x74
,
0x69
,
0x6d
,
0x65
,
0x18
,
0x05
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1a
,
0x2e
,
0x67
,
0x6f
,
0x6f
,
0x67
,
0x6c
,
0x65
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x62
,
0x75
,
0x66
,
0x2e
,
0x54
,
0x69
,
0x6d
,
0x65
,
0x73
,
0x74
,
0x61
,
0x6d
,
0x70
,
0x42
,
0x04
,
0xe2
,
0x41
,
0x01
,
0x03
,
0x52
,
0x0a
,
0x63
,
0x72
,
0x65
,
0x61
,
0x74
,
0x65
,
0x54
,
0x69
,
0x6d
,
0x65
,
0x12
,
0x37
,
0x0a
,
0x07
,
0x70
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x18
,
0x06
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x52
,
0x07
,
0x70
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x22
,
0x5d
,
0x0a
,
0x1a
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x43
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x12
,
0x17
,
0x0a
,
0x07
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x5f
,
0x69
,
0x64
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x49
,
0x64
,
0x12
,
0x26
,
0x0a
,
0x0f
,
0x72
,
0x65
,
0x6c
,
0x61
,
0x74
,
0x65
,
0x64
,
0x5f
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x5f
,
0x69
,
0x64
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x0d
,
0x72
,
0x65
,
0x6c
,
0x61
,
0x74
,
0x65
,
0x64
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x49
,
0x64
,
0x22
,
0x38
,
0x0a
,
0x1c
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x56
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x55
,
0x70
,
0x64
,
0x61
,
0x74
,
0x65
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x76
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x76
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x22
,
0xb1
,
0x01
,
0x0a
,
0x0f
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x12
,
0x4b
,
0x0a
,
0x0c
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x5f
,
0x63
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x28
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x43
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x52
,
0x0b
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x43
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x51
,
0x0a
,
0x0e
,
0x76
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x5f
,
0x75
,
0x70
,
0x64
,
0x61
,
0x74
,
0x65
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x2a
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x56
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x55
,
0x70
,
0x64
,
0x61
,
0x74
,
0x65
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x52
,
0x0d
,
0x76
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x55
,
0x70
,
0x64
,
0x61
,
0x74
,
0x65
,
0x22
,
0x24
,
0x0a
,
0x12
,
0x47
,
0x65
,
0x74
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x12
,
0x0e
,
0x0a
,
0x02
,
0x69
,
0x64
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x02
,
0x69
,
0x64
,
0x32
,
0x80
,
0x01
,
0x0a
,
0x0f
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x12
,
0x6d
,
0x0a
,
0x0b
,
0x47
,
0x65
,
0x74
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x12
,
0x20
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x47
,
0x65
,
0x74
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x16
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x22
,
0x24
,
0xda
,
0x41
,
0x02
,
0x69
,
0x64
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x19
,
0x12
,
0x17
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x61
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x69
,
0x65
,
0x73
,
0x2f
,
0x7b
,
0x69
,
0x64
,
0x7d
,
0x42
,
0xac
,
0x01
,
0x0a
,
0x10
,
0x63
,
0x6f
,
0x6d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x42
,
0x14
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x50
,
0x01
,
0x5a
,
0x30
,
0x67
,
0x69
,
0x74
,
0x68
,
0x75
,
0x62
,
0x2e
,
0x63
,
0x6f
,
0x6d
,
0x2f
,
0x75
,
0x73
,
0x65
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
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
,
0x4d
,
0x41
,
0x58
,
0xaa
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x41
,
0x70
,
0x69
,
0x2e
,
0x56
,
0x31
,
0xca
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x31
,
0xe2
,
0x02
,
0x18
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x31
,
0x5c
,
0x47
,
0x50
,
0x42
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0xea
,
0x02
,
0x0e
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x3a
,
0x3a
,
0x41
,
0x70
,
0x69
,
0x3a
,
0x3a
,
0x56
,
0x31
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x22
,
0xe3
,
0x01
,
0x0a
,
0x08
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x04
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x12
,
0x1d
,
0x0a
,
0x0a
,
0x63
,
0x72
,
0x65
,
0x61
,
0x74
,
0x6f
,
0x72
,
0x5f
,
0x69
,
0x64
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x09
,
0x63
,
0x72
,
0x65
,
0x61
,
0x74
,
0x6f
,
0x72
,
0x49
,
0x64
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x74
,
0x79
,
0x70
,
0x65
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x04
,
0x74
,
0x79
,
0x70
,
0x65
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x18
,
0x04
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x12
,
0x41
,
0x0a
,
0x0b
,
0x63
,
0x72
,
0x65
,
0x61
,
0x74
,
0x65
,
0x5f
,
0x74
,
0x69
,
0x6d
,
0x65
,
0x18
,
0x05
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1a
,
0x2e
,
0x67
,
0x6f
,
0x6f
,
0x67
,
0x6c
,
0x65
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x62
,
0x75
,
0x66
,
0x2e
,
0x54
,
0x69
,
0x6d
,
0x65
,
0x73
,
0x74
,
0x61
,
0x6d
,
0x70
,
0x42
,
0x04
,
0xe2
,
0x41
,
0x01
,
0x03
,
0x52
,
0x0a
,
0x63
,
0x72
,
0x65
,
0x61
,
0x74
,
0x65
,
0x54
,
0x69
,
0x6d
,
0x65
,
0x12
,
0x37
,
0x0a
,
0x07
,
0x70
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x18
,
0x06
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x52
,
0x07
,
0x70
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x22
,
0xb1
,
0x01
,
0x0a
,
0x0f
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x12
,
0x4b
,
0x0a
,
0x0c
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x5f
,
0x63
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x28
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x43
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x52
,
0x0b
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x43
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x51
,
0x0a
,
0x0e
,
0x76
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x5f
,
0x75
,
0x70
,
0x64
,
0x61
,
0x74
,
0x65
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x2a
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x56
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x55
,
0x70
,
0x64
,
0x61
,
0x74
,
0x65
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x52
,
0x0d
,
0x76
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x55
,
0x70
,
0x64
,
0x61
,
0x74
,
0x65
,
0x22
,
0x5d
,
0x0a
,
0x1a
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x43
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x12
,
0x17
,
0x0a
,
0x07
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x5f
,
0x69
,
0x64
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x49
,
0x64
,
0x12
,
0x26
,
0x0a
,
0x0f
,
0x72
,
0x65
,
0x6c
,
0x61
,
0x74
,
0x65
,
0x64
,
0x5f
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x5f
,
0x69
,
0x64
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x0d
,
0x72
,
0x65
,
0x6c
,
0x61
,
0x74
,
0x65
,
0x64
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x49
,
0x64
,
0x22
,
0x38
,
0x0a
,
0x1c
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x56
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x55
,
0x70
,
0x64
,
0x61
,
0x74
,
0x65
,
0x50
,
0x61
,
0x79
,
0x6c
,
0x6f
,
0x61
,
0x64
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x76
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x76
,
0x65
,
0x72
,
0x73
,
0x69
,
0x6f
,
0x6e
,
0x22
,
0x28
,
0x0a
,
0x12
,
0x47
,
0x65
,
0x74
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x04
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x32
,
0x86
,
0x01
,
0x0a
,
0x0f
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x12
,
0x73
,
0x0a
,
0x0b
,
0x47
,
0x65
,
0x74
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x12
,
0x20
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x47
,
0x65
,
0x74
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x16
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x22
,
0x2a
,
0xda
,
0x41
,
0x04
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x1d
,
0x12
,
0x1b
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x7b
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x3d
,
0x61
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x69
,
0x65
,
0x73
,
0x2f
,
0x2a
,
0x7d
,
0x42
,
0xac
,
0x01
,
0x0a
,
0x10
,
0x63
,
0x6f
,
0x6d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x42
,
0x14
,
0x41
,
0x63
,
0x74
,
0x69
,
0x76
,
0x69
,
0x74
,
0x79
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x50
,
0x01
,
0x5a
,
0x30
,
0x67
,
0x69
,
0x74
,
0x68
,
0x75
,
0x62
,
0x2e
,
0x63
,
0x6f
,
0x6d
,
0x2f
,
0x75
,
0x73
,
0x65
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
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
,
0x4d
,
0x41
,
0x58
,
0xaa
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x41
,
0x70
,
0x69
,
0x2e
,
0x56
,
0x31
,
0xca
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x31
,
0xe2
,
0x02
,
0x18
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x31
,
0x5c
,
0x47
,
0x50
,
0x42
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0xea
,
0x02
,
0x0e
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x3a
,
0x3a
,
0x41
,
0x70
,
0x69
,
0x3a
,
0x3a
,
0x56
,
0x31
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
}
var
(
...
...
@@ -412,17 +415,17 @@ func file_api_v1_activity_service_proto_rawDescGZIP() []byte {
var
file_api_v1_activity_service_proto_msgTypes
=
make
([]
protoimpl
.
MessageInfo
,
5
)
var
file_api_v1_activity_service_proto_goTypes
=
[]
any
{
(
*
Activity
)(
nil
),
// 0: memos.api.v1.Activity
(
*
Activity
MemoCommentPayload
)(
nil
),
// 1: memos.api.v1.ActivityMemoComment
Payload
(
*
Activity
VersionUpdatePayload
)(
nil
),
// 2: memos.api.v1.ActivityVersionUpdate
Payload
(
*
Activity
Payload
)(
nil
),
// 3: memos.api.v1.Activity
Payload
(
*
Activity
Payload
)(
nil
),
// 1: memos.api.v1.Activity
Payload
(
*
Activity
MemoCommentPayload
)(
nil
),
// 2: memos.api.v1.ActivityMemoComment
Payload
(
*
Activity
VersionUpdatePayload
)(
nil
),
// 3: memos.api.v1.ActivityVersionUpdate
Payload
(
*
GetActivityRequest
)(
nil
),
// 4: memos.api.v1.GetActivityRequest
(
*
timestamppb
.
Timestamp
)(
nil
),
// 5: google.protobuf.Timestamp
}
var
file_api_v1_activity_service_proto_depIdxs
=
[]
int32
{
5
,
// 0: memos.api.v1.Activity.create_time:type_name -> google.protobuf.Timestamp
3
,
// 1: memos.api.v1.Activity.payload:type_name -> memos.api.v1.ActivityPayload
1
,
// 2: memos.api.v1.ActivityPayload.memo_comment:type_name -> memos.api.v1.ActivityMemoCommentPayload
2
,
// 3: memos.api.v1.ActivityPayload.version_update:type_name -> memos.api.v1.ActivityVersionUpdatePayload
1
,
// 1: memos.api.v1.Activity.payload:type_name -> memos.api.v1.ActivityPayload
2
,
// 2: memos.api.v1.ActivityPayload.memo_comment:type_name -> memos.api.v1.ActivityMemoCommentPayload
3
,
// 3: memos.api.v1.ActivityPayload.version_update:type_name -> memos.api.v1.ActivityVersionUpdatePayload
4
,
// 4: memos.api.v1.ActivityService.GetActivity:input_type -> memos.api.v1.GetActivityRequest
0
,
// 5: memos.api.v1.ActivityService.GetActivity:output_type -> memos.api.v1.Activity
5
,
// [5:6] is the sub-list for method output_type
...
...
@@ -451,7 +454,7 @@ func file_api_v1_activity_service_proto_init() {
}
}
file_api_v1_activity_service_proto_msgTypes
[
1
]
.
Exporter
=
func
(
v
any
,
i
int
)
any
{
switch
v
:=
v
.
(
*
Activity
MemoComment
Payload
);
i
{
switch
v
:=
v
.
(
*
ActivityPayload
);
i
{
case
0
:
return
&
v
.
state
case
1
:
...
...
@@ -463,7 +466,7 @@ func file_api_v1_activity_service_proto_init() {
}
}
file_api_v1_activity_service_proto_msgTypes
[
2
]
.
Exporter
=
func
(
v
any
,
i
int
)
any
{
switch
v
:=
v
.
(
*
Activity
VersionUpdate
Payload
);
i
{
switch
v
:=
v
.
(
*
Activity
MemoComment
Payload
);
i
{
case
0
:
return
&
v
.
state
case
1
:
...
...
@@ -475,7 +478,7 @@ func file_api_v1_activity_service_proto_init() {
}
}
file_api_v1_activity_service_proto_msgTypes
[
3
]
.
Exporter
=
func
(
v
any
,
i
int
)
any
{
switch
v
:=
v
.
(
*
ActivityPayload
);
i
{
switch
v
:=
v
.
(
*
Activity
VersionUpdate
Payload
);
i
{
case
0
:
return
&
v
.
state
case
1
:
...
...
proto/gen/api/v1/activity_service.pb.gw.go
View file @
21f18f7c
...
...
@@ -42,14 +42,14 @@ func request_ActivityService_GetActivity_0(ctx context.Context, marshaler runtim
_
=
err
)
val
,
ok
=
pathParams
[
"
id
"
]
val
,
ok
=
pathParams
[
"
name
"
]
if
!
ok
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"missing parameter %s"
,
"
id
"
)
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"missing parameter %s"
,
"
name
"
)
}
protoReq
.
Id
,
err
=
runtime
.
Int32
(
val
)
protoReq
.
Name
,
err
=
runtime
.
String
(
val
)
if
err
!=
nil
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"type mismatch, parameter: %s, error: %v"
,
"
id
"
,
err
)
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"type mismatch, parameter: %s, error: %v"
,
"
name
"
,
err
)
}
msg
,
err
:=
client
.
GetActivity
(
ctx
,
&
protoReq
,
grpc
.
Header
(
&
metadata
.
HeaderMD
),
grpc
.
Trailer
(
&
metadata
.
TrailerMD
))
...
...
@@ -68,14 +68,14 @@ func local_request_ActivityService_GetActivity_0(ctx context.Context, marshaler
_
=
err
)
val
,
ok
=
pathParams
[
"
id
"
]
val
,
ok
=
pathParams
[
"
name
"
]
if
!
ok
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"missing parameter %s"
,
"
id
"
)
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"missing parameter %s"
,
"
name
"
)
}
protoReq
.
Id
,
err
=
runtime
.
Int32
(
val
)
protoReq
.
Name
,
err
=
runtime
.
String
(
val
)
if
err
!=
nil
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"type mismatch, parameter: %s, error: %v"
,
"
id
"
,
err
)
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"type mismatch, parameter: %s, error: %v"
,
"
name
"
,
err
)
}
msg
,
err
:=
server
.
GetActivity
(
ctx
,
&
protoReq
)
...
...
@@ -98,7 +98,7 @@ func RegisterActivityServiceHandlerServer(ctx context.Context, mux *runtime.Serv
inboundMarshaler
,
outboundMarshaler
:=
runtime
.
MarshalerForRequest
(
mux
,
req
)
var
err
error
var
annotatedContext
context
.
Context
annotatedContext
,
err
=
runtime
.
AnnotateIncomingContext
(
ctx
,
mux
,
req
,
"/memos.api.v1.ActivityService/GetActivity"
,
runtime
.
WithHTTPPathPattern
(
"/api/v1/
activities/{id
}"
))
annotatedContext
,
err
=
runtime
.
AnnotateIncomingContext
(
ctx
,
mux
,
req
,
"/memos.api.v1.ActivityService/GetActivity"
,
runtime
.
WithHTTPPathPattern
(
"/api/v1/
{name=activities/*
}"
))
if
err
!=
nil
{
runtime
.
HTTPError
(
ctx
,
mux
,
outboundMarshaler
,
w
,
req
,
err
)
return
...
...
@@ -162,7 +162,7 @@ func RegisterActivityServiceHandlerClient(ctx context.Context, mux *runtime.Serv
inboundMarshaler
,
outboundMarshaler
:=
runtime
.
MarshalerForRequest
(
mux
,
req
)
var
err
error
var
annotatedContext
context
.
Context
annotatedContext
,
err
=
runtime
.
AnnotateContext
(
ctx
,
mux
,
req
,
"/memos.api.v1.ActivityService/GetActivity"
,
runtime
.
WithHTTPPathPattern
(
"/api/v1/
activities/{id
}"
))
annotatedContext
,
err
=
runtime
.
AnnotateContext
(
ctx
,
mux
,
req
,
"/memos.api.v1.ActivityService/GetActivity"
,
runtime
.
WithHTTPPathPattern
(
"/api/v1/
{name=activities/*
}"
))
if
err
!=
nil
{
runtime
.
HTTPError
(
ctx
,
mux
,
outboundMarshaler
,
w
,
req
,
err
)
return
...
...
@@ -182,7 +182,7 @@ func RegisterActivityServiceHandlerClient(ctx context.Context, mux *runtime.Serv
}
var
(
pattern_ActivityService_GetActivity_0
=
runtime
.
MustPattern
(
runtime
.
NewPattern
(
1
,
[]
int
{
2
,
0
,
2
,
1
,
2
,
2
,
1
,
0
,
4
,
1
,
5
,
3
},
[]
string
{
"api"
,
"v1"
,
"activities"
,
"id
"
},
""
))
pattern_ActivityService_GetActivity_0
=
runtime
.
MustPattern
(
runtime
.
NewPattern
(
1
,
[]
int
{
2
,
0
,
2
,
1
,
2
,
2
,
1
,
0
,
4
,
2
,
5
,
3
},
[]
string
{
"api"
,
"v1"
,
"activities"
,
"name
"
},
""
))
)
var
(
...
...
server/router/api/v1/activity_service.go
View file @
21f18f7c
...
...
@@ -2,6 +2,7 @@ package v1
import
(
"context"
"fmt"
"time"
"google.golang.org/grpc/codes"
...
...
@@ -14,8 +15,12 @@ import (
)
func
(
s
*
APIV1Service
)
GetActivity
(
ctx
context
.
Context
,
request
*
v1pb
.
GetActivityRequest
)
(
*
v1pb
.
Activity
,
error
)
{
activityID
,
err
:=
ExtractActivityIDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid activity name: %v"
,
err
)
}
activity
,
err
:=
s
.
Store
.
GetActivity
(
ctx
,
&
store
.
FindActivity
{
ID
:
&
request
.
Id
,
ID
:
&
activityID
,
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get activity: %v"
,
err
)
...
...
@@ -30,7 +35,7 @@ func (s *APIV1Service) GetActivity(ctx context.Context, request *v1pb.GetActivit
func
(
*
APIV1Service
)
convertActivityFromStore
(
_
context
.
Context
,
activity
*
store
.
Activity
)
(
*
v1pb
.
Activity
,
error
)
{
return
&
v1pb
.
Activity
{
Id
:
activity
.
ID
,
Name
:
fmt
.
Sprintf
(
"%s%d"
,
ActivityNamePrefix
,
activity
.
ID
)
,
CreatorId
:
activity
.
CreatorID
,
Type
:
activity
.
Type
.
String
(),
Level
:
activity
.
Level
.
String
(),
...
...
server/router/api/v1/resource_name.go
View file @
21f18f7c
...
...
@@ -17,6 +17,7 @@ const (
InboxNamePrefix
=
"inboxes/"
StorageNamePrefix
=
"storages/"
IdentityProviderNamePrefix
=
"identityProviders/"
ActivityNamePrefix
=
"activities/"
)
// GetNameParentTokens returns the tokens from a resource name.
...
...
@@ -123,3 +124,15 @@ func ExtractIdentityProviderIDFromName(name string) (int32, error) {
}
return
id
,
nil
}
func
ExtractActivityIDFromName
(
name
string
)
(
int32
,
error
)
{
tokens
,
err
:=
GetNameParentTokens
(
name
,
ActivityNamePrefix
)
if
err
!=
nil
{
return
0
,
err
}
id
,
err
:=
util
.
ConvertStringToInt32
(
tokens
[
0
])
if
err
!=
nil
{
return
0
,
errors
.
Errorf
(
"invalid activity ID %q"
,
tokens
[
0
])
}
return
id
,
nil
}
web/src/components/Inbox/MemoCommentMessage.tsx
View file @
21f18f7c
...
...
@@ -4,7 +4,7 @@ import { useEffect, useState } from "react";
import
toast
from
"react-hot-toast"
;
import
{
activityServiceClient
}
from
"@/grpcweb"
;
import
useNavigateTo
from
"@/hooks/useNavigateTo"
;
import
{
MemoNamePrefix
,
useInboxStore
,
useMemoStore
,
useUserStore
}
from
"@/store/v1"
;
import
{
activityNamePrefix
,
MemoNamePrefix
,
useInboxStore
,
useMemoStore
,
useUserStore
}
from
"@/store/v1"
;
import
{
Inbox
,
Inbox_Status
}
from
"@/types/proto/api/v1/inbox_service"
;
import
{
Memo
}
from
"@/types/proto/api/v1/memo_service"
;
import
{
User
}
from
"@/types/proto/api/v1/user_service"
;
...
...
@@ -31,7 +31,7 @@ const MemoCommentMessage = ({ inbox }: Props) => {
(
async
()
=>
{
const
activity
=
await
activityServiceClient
.
getActivity
({
id
:
inbox
.
activityId
,
name
:
`
${
activityNamePrefix
}${
inbox
.
activityId
}
`
,
});
if
(
activity
.
payload
?.
memoComment
)
{
const
memoCommentPayload
=
activity
.
payload
.
memoComment
;
...
...
web/src/components/Inbox/VersionUpdateMessage.tsx
View file @
21f18f7c
...
...
@@ -3,7 +3,7 @@ import clsx from "clsx";
import
{
useEffect
,
useState
}
from
"react"
;
import
toast
from
"react-hot-toast"
;
import
{
activityServiceClient
}
from
"@/grpcweb"
;
import
{
useInboxStore
}
from
"@/store/v1"
;
import
{
activityNamePrefix
,
useInboxStore
}
from
"@/store/v1"
;
import
{
Activity
}
from
"@/types/proto/api/v1/activity_service"
;
import
{
Inbox
,
Inbox_Status
}
from
"@/types/proto/api/v1/inbox_service"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
...
...
@@ -25,7 +25,7 @@ const VersionUpdateMessage = ({ inbox }: Props) => {
(
async
()
=>
{
const
activity
=
await
activityServiceClient
.
getActivity
({
id
:
inbox
.
activityId
,
name
:
`
${
activityNamePrefix
}${
inbox
.
activityId
}
`
,
});
setActivity
(
activity
);
})();
...
...
web/src/components/Settings/MemoRelatedSettings.tsx
View file @
21f18f7c
import
{
Button
,
Input
,
Switch
}
from
"@mui/joy"
;
import
{
isEqual
}
from
"lodash-es"
;
import
{
useState
}
from
"react"
;
import
{
WorkspaceSetting
Prefix
,
useWorkspaceSettingStore
}
from
"@/store/v1"
;
import
{
workspaceSettingName
Prefix
,
useWorkspaceSettingStore
}
from
"@/store/v1"
;
import
{
WorkspaceMemoRelatedSetting
}
from
"@/types/proto/api/v1/workspace_setting_service"
;
import
{
WorkspaceSettingKey
}
from
"@/types/proto/store/workspace_setting"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
...
...
@@ -24,7 +24,7 @@ const MemoRelatedSettings = () => {
const
updateSetting
=
async
()
=>
{
await
workspaceSettingStore
.
setWorkspaceSetting
({
name
:
`
${
WorkspaceSetting
Prefix
}${
WorkspaceSettingKey
.
MEMO_RELATED
}
`
,
name
:
`
${
workspaceSettingName
Prefix
}${
WorkspaceSettingKey
.
MEMO_RELATED
}
`
,
memoRelatedSetting
,
});
};
...
...
web/src/components/Settings/StorageSection.tsx
View file @
21f18f7c
...
...
@@ -3,7 +3,7 @@ import { isEqual } from "lodash-es";
import
{
useMemo
,
useState
}
from
"react"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
Link
}
from
"react-router-dom"
;
import
{
WorkspaceSetting
Prefix
,
useWorkspaceSettingStore
}
from
"@/store/v1"
;
import
{
workspaceSettingName
Prefix
,
useWorkspaceSettingStore
}
from
"@/store/v1"
;
import
{
WorkspaceStorageSetting
,
WorkspaceStorageSetting_S3Config
,
...
...
@@ -107,7 +107,7 @@ const StorageSection = () => {
const
saveWorkspaceStorageSetting
=
async
()
=>
{
await
workspaceSettingStore
.
setWorkspaceSetting
({
name
:
`
${
WorkspaceSetting
Prefix
}${
WorkspaceSettingKey
.
STORAGE
}
`
,
name
:
`
${
workspaceSettingName
Prefix
}${
WorkspaceSettingKey
.
STORAGE
}
`
,
storageSetting
:
workspaceStorageSetting
,
});
toast
.
success
(
"Updated"
);
...
...
web/src/components/Settings/WorkspaceSection.tsx
View file @
21f18f7c
...
...
@@ -3,7 +3,7 @@ import { useState } from "react";
import
{
toast
}
from
"react-hot-toast"
;
import
{
Link
}
from
"react-router-dom"
;
import
{
workspaceSettingServiceClient
}
from
"@/grpcweb"
;
import
{
WorkspaceSetting
Prefix
,
useWorkspaceSettingStore
}
from
"@/store/v1"
;
import
{
workspaceSettingName
Prefix
,
useWorkspaceSettingStore
}
from
"@/store/v1"
;
import
{
WorkspaceGeneralSetting
}
from
"@/types/proto/api/v1/workspace_setting_service"
;
import
{
WorkspaceSettingKey
}
from
"@/types/proto/store/workspace_setting"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
...
...
@@ -29,7 +29,7 @@ const WorkspaceSection = () => {
try
{
await
workspaceSettingServiceClient
.
setWorkspaceSetting
({
setting
:
{
name
:
`
${
WorkspaceSetting
Prefix
}${
WorkspaceSettingKey
.
GENERAL
}
`
,
name
:
`
${
workspaceSettingName
Prefix
}${
WorkspaceSettingKey
.
GENERAL
}
`
,
generalSetting
:
workspaceGeneralSetting
,
},
});
...
...
@@ -49,7 +49,7 @@ const WorkspaceSection = () => {
try
{
await
workspaceSettingServiceClient
.
setWorkspaceSetting
({
setting
:
{
name
:
`
${
WorkspaceSetting
Prefix
}${
WorkspaceSettingKey
.
GENERAL
}
`
,
name
:
`
${
workspaceSettingName
Prefix
}${
WorkspaceSettingKey
.
GENERAL
}
`
,
generalSetting
:
workspaceGeneralSetting
,
},
});
...
...
web/src/components/UpdateAccountDialog.tsx
View file @
21f18f7c
...
...
@@ -4,7 +4,7 @@ import { useState } from "react";
import
{
toast
}
from
"react-hot-toast"
;
import
{
convertFileToBase64
}
from
"@/helpers/utils"
;
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
{
U
serNamePrefix
,
useUserStore
}
from
"@/store/v1"
;
import
{
u
serNamePrefix
,
useUserStore
}
from
"@/store/v1"
;
import
{
User
as
UserPb
}
from
"@/types/proto/api/v1/user_service"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
{
generateDialog
}
from
"./Dialog"
;
...
...
@@ -104,7 +104,7 @@ const UpdateAccountDialog: React.FC<Props> = ({ destroy }: Props) => {
try
{
const
updateMask
=
[];
if
(
!
isEqual
(
currentUser
.
name
.
replace
(
U
serNamePrefix
,
""
),
state
.
username
))
{
if
(
!
isEqual
(
currentUser
.
name
.
replace
(
u
serNamePrefix
,
""
),
state
.
username
))
{
updateMask
.
push
(
"username"
);
}
if
(
!
isEqual
(
currentUser
.
nickname
,
state
.
nickname
))
{
...
...
web/src/components/UpdateCustomizedProfileDialog.tsx
View file @
21f18f7c
...
...
@@ -2,7 +2,7 @@ import { Button, IconButton, Input } from "@mui/joy";
import
Textarea
from
"@mui/joy/Textarea/Textarea"
;
import
{
useState
}
from
"react"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
WorkspaceSetting
Prefix
,
useWorkspaceSettingStore
}
from
"@/store/v1"
;
import
{
workspaceSettingName
Prefix
,
useWorkspaceSettingStore
}
from
"@/store/v1"
;
import
{
WorkspaceCustomProfile
,
WorkspaceGeneralSetting
}
from
"@/types/proto/api/v1/workspace_setting_service"
;
import
{
WorkspaceSettingKey
}
from
"@/types/proto/store/workspace_setting"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
...
...
@@ -84,7 +84,7 @@ const UpdateCustomizedProfileDialog: React.FC<Props> = ({ destroy }: Props) => {
try
{
await
workspaceSettingStore
.
setWorkspaceSetting
({
name
:
`
${
WorkspaceSetting
Prefix
}${
WorkspaceSettingKey
.
GENERAL
}
`
,
name
:
`
${
workspaceSettingName
Prefix
}${
WorkspaceSettingKey
.
GENERAL
}
`
,
generalSetting
:
{
...
workspaceGeneralSetting
,
customProfile
:
customProfile
,
...
...
web/src/store/v1/resourceName.ts
View file @
21f18f7c
export
const
WorkspaceSetting
Prefix
=
"settings/"
;
export
const
U
serNamePrefix
=
"users/"
;
export
const
workspaceSettingName
Prefix
=
"settings/"
;
export
const
u
serNamePrefix
=
"users/"
;
export
const
MemoNamePrefix
=
"memos/"
;
export
const
IdentityProviderNamePrefix
=
"identityProviders/"
;
export
const
identityProviderNamePrefix
=
"identityProviders/"
;
export
const
activityNamePrefix
=
"activities/"
;
export
const
extractMemoIdFromName
=
(
name
:
string
)
=>
{
return
parseInt
(
name
.
split
(
MemoNamePrefix
).
pop
()
||
""
,
10
);
};
export
const
extractIdentityProviderIdFromName
=
(
name
:
string
)
=>
{
return
parseInt
(
name
.
split
(
I
dentityProviderNamePrefix
).
pop
()
||
""
,
10
);
return
parseInt
(
name
.
split
(
i
dentityProviderNamePrefix
).
pop
()
||
""
,
10
);
};
web/src/store/v1/workspaceSetting.ts
View file @
21f18f7c
...
...
@@ -3,7 +3,7 @@ import { combine } from "zustand/middleware";
import
{
workspaceSettingServiceClient
}
from
"@/grpcweb"
;
import
{
WorkspaceSetting
}
from
"@/types/proto/api/v1/workspace_setting_service"
;
import
{
WorkspaceSettingKey
}
from
"@/types/proto/store/workspace_setting"
;
import
{
WorkspaceSetting
Prefix
}
from
"./resourceName"
;
import
{
workspaceSettingName
Prefix
}
from
"./resourceName"
;
interface
State
{
workspaceSettingByName
:
Record
<
string
,
WorkspaceSetting
>
;
...
...
@@ -19,11 +19,11 @@ export const useWorkspaceSettingStore = create(
return
get
();
},
fetchWorkspaceSetting
:
async
(
key
:
WorkspaceSettingKey
)
=>
{
const
setting
=
await
workspaceSettingServiceClient
.
getWorkspaceSetting
({
name
:
`
${
WorkspaceSetting
Prefix
}${
key
}
`
});
const
setting
=
await
workspaceSettingServiceClient
.
getWorkspaceSetting
({
name
:
`
${
workspaceSettingName
Prefix
}${
key
}
`
});
set
({
workspaceSettingByName
:
{
...
get
().
workspaceSettingByName
,
[
setting
.
name
]:
setting
}
});
},
getWorkspaceSettingByKey
:
(
key
:
WorkspaceSettingKey
):
WorkspaceSetting
=>
{
return
get
().
workspaceSettingByName
[
`
${
WorkspaceSetting
Prefix
}${
key
}
`
]
||
WorkspaceSetting
.
fromPartial
({});
return
get
().
workspaceSettingByName
[
`
${
workspaceSettingName
Prefix
}${
key
}
`
]
||
WorkspaceSetting
.
fromPartial
({});
},
setWorkspaceSetting
:
async
(
setting
:
WorkspaceSetting
)
=>
{
await
workspaceSettingServiceClient
.
setWorkspaceSetting
({
setting
});
...
...
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