Commit 41976cb8 authored by johnnyjoy's avatar johnnyjoy

feat: update memo endpoints

parent c28516b3
......@@ -825,22 +825,16 @@ paths:
type: string
pinned:
type: boolean
parentId:
type: integer
format: int32
readOnly: true
resources:
type: array
items:
type: object
$ref: '#/definitions/v1Resource'
readOnly: true
relations:
type: array
items:
type: object
$ref: '#/definitions/v1MemoRelation'
readOnly: true
reactions:
type: array
items:
......@@ -2260,6 +2254,16 @@ definitions:
type: string
visibility:
$ref: '#/definitions/v1Visibility'
resources:
type: array
items:
type: object
$ref: '#/definitions/v1Resource'
relations:
type: array
items:
type: object
$ref: '#/definitions/v1MemoRelation'
v1CreateWebhookRequest:
type: object
properties:
......@@ -2547,22 +2551,16 @@ definitions:
type: string
pinned:
type: boolean
parentId:
type: integer
format: int32
readOnly: true
resources:
type: array
items:
type: object
$ref: '#/definitions/v1Resource'
readOnly: true
relations:
type: array
items:
type: object
$ref: '#/definitions/v1MemoRelation'
readOnly: true
reactions:
type: array
items:
......
......@@ -174,14 +174,9 @@ message Memo {
bool pinned = 12;
optional int32 parent_id = 13 [
deprecated = true,
(google.api.field_behavior) = OUTPUT_ONLY
];
repeated Resource resources = 14;
repeated Resource resources = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
repeated MemoRelation relations = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
repeated MemoRelation relations = 15;
repeated Reaction reactions = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
......@@ -207,6 +202,10 @@ message CreateMemoRequest {
string content = 1;
Visibility visibility = 2;
repeated Resource resources = 3;
repeated MemoRelation relations = 4;
}
message ListMemosRequest {
......
This diff is collapsed.
......@@ -71,6 +71,24 @@ func (s *APIV1Service) CreateMemo(ctx context.Context, request *v1pb.CreateMemoR
if err != nil {
return nil, err
}
if len(request.Resources) > 0 {
_, err := s.SetMemoResources(ctx, &v1pb.SetMemoResourcesRequest{
Name: fmt.Sprintf("%s%d", MemoNamePrefix, memo.ID),
Resources: request.Resources,
})
if err != nil {
return nil, errors.Wrap(err, "failed to set memo resources")
}
}
if len(request.Relations) > 0 {
_, err := s.SetMemoRelations(ctx, &v1pb.SetMemoRelationsRequest{
Name: fmt.Sprintf("%s%d", MemoNamePrefix, memo.ID),
Relations: request.Relations,
})
if err != nil {
return nil, errors.Wrap(err, "failed to set memo relations")
}
}
memoMessage, err := s.convertMemoFromStore(ctx, memo)
if err != nil {
......@@ -293,6 +311,22 @@ func (s *APIV1Service) UpdateMemo(ctx context.Context, request *v1pb.UpdateMemoR
}); err != nil {
return nil, status.Errorf(codes.Internal, "failed to upsert memo organizer")
}
} else if path == "resources" {
_, err := s.SetMemoResources(ctx, &v1pb.SetMemoResourcesRequest{
Name: request.Memo.Name,
Resources: request.Memo.Resources,
})
if err != nil {
return nil, errors.Wrap(err, "failed to set memo resources")
}
} else if path == "relations" {
_, err := s.SetMemoRelations(ctx, &v1pb.SetMemoRelationsRequest{
Name: request.Memo.Name,
Relations: request.Memo.Relations,
})
if err != nil {
return nil, errors.Wrap(err, "failed to set memo relations")
}
}
}
......@@ -1145,8 +1179,8 @@ func getMemoContentSnippet(content string) (string, error) {
}
plainText := renderer.NewStringRenderer().Render(nodes)
if len(plainText) > 100 {
return substring(plainText, 100) + "...", nil
if len(plainText) > 64 {
return substring(plainText, 64) + "...", nil
}
return plainText, nil
}
......
......@@ -303,15 +303,15 @@ const MemoEditor = (props: Props) => {
updateMask.push("display_time");
memoPatch.displayTime = displayTime;
}
if (!isEqual(state.resourceList, prevMemo.resources)) {
updateMask.push("resources");
memoPatch.resources = state.resourceList;
}
if (!isEqual(state.relationList, prevMemo.relations)) {
updateMask.push("relations");
memoPatch.relations = state.relationList;
}
const memo = await memoStore.updateMemo(memoPatch, updateMask);
await memoServiceClient.setMemoResources({
name: memo.name,
resources: state.resourceList,
});
await memoServiceClient.setMemoRelations({
name: memo.name,
relations: state.relationList,
});
await memoStore.getOrFetchMemoByName(memo.name, { skipCache: true });
if (onConfirm) {
onConfirm(memo.name);
......@@ -323,6 +323,8 @@ const MemoEditor = (props: Props) => {
? memoStore.createMemo({
content,
visibility: state.memoVisibility,
resources: state.resourceList,
relations: state.relationList,
})
: memoServiceClient
.createMemoComment({
......@@ -330,18 +332,12 @@ const MemoEditor = (props: Props) => {
comment: {
content,
visibility: state.memoVisibility,
resources: state.resourceList,
relations: state.relationList,
},
})
.then((memo) => memo);
const memo = await request;
await memoServiceClient.setMemoResources({
name: memo.name,
resources: state.resourceList,
});
await memoServiceClient.setMemoRelations({
name: memo.name,
relations: state.relationList,
});
await memoStore.getOrFetchMemoByName(memo.name, { skipCache: true });
if (onConfirm) {
onConfirm(memo.name);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment