@amityco/ts-sdk-react-native 7.8.5-f2bdad1.0 → 7.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +26 -26
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/core/payload.d.ts +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/core/payload.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/core/payload.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/domains/message.d.ts +4 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/domains/message.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/domains/message.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/categoryRepository/internalApi/queryCategories.js +2 -2
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/categoryRepository/internalApi/queryCategories.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/messageRepository/utils/addReactionToMessage.d.ts +2 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/messageRepository/utils/addReactionToMessage.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/messageRepository/utils/addReactionToMessage.js +6 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/messageRepository/utils/addReactionToMessage.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/messageRepository/utils/removeReactionToMessage.d.ts +2 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/messageRepository/utils/removeReactionToMessage.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/messageRepository/utils/removeReactionToMessage.js +6 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/messageRepository/utils/removeReactionToMessage.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/addReaction.d.ts +5 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/addReaction.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/addReaction.js +92 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/addReaction.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/index.d.ts +3 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/index.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/index.js +3 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/removeReaction.d.ts +2 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/removeReaction.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/removeReaction.js +68 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/reactionRepository/internalApi/removeReaction.js.map +1 -0
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/userRepository/observers/searchUserByDisplayName/SearchUserPaginationController.js +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/userRepository/observers/searchUserByDisplayName/SearchUserPaginationController.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/utils/linkedObject/messageLinkedObject.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/utils/linkedObject/messageLinkedObject.js +3 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/utils/linkedObject/messageLinkedObject.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
- package/dist/@types/core/payload.d.ts +1 -1
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/domains/message.d.ts +4 -0
- package/dist/@types/domains/message.d.ts.map +1 -1
- package/dist/index.cjs.js +191 -31
- package/dist/index.esm.js +191 -31
- package/dist/index.umd.js +2 -2
- package/dist/messageRepository/utils/addReactionToMessage.d.ts +2 -0
- package/dist/messageRepository/utils/addReactionToMessage.d.ts.map +1 -0
- package/dist/messageRepository/utils/removeReactionToMessage.d.ts +2 -0
- package/dist/messageRepository/utils/removeReactionToMessage.d.ts.map +1 -0
- package/dist/reactionRepository/internalApi/addReaction.d.ts +5 -0
- package/dist/reactionRepository/internalApi/addReaction.d.ts.map +1 -0
- package/dist/reactionRepository/internalApi/index.d.ts +3 -0
- package/dist/reactionRepository/internalApi/index.d.ts.map +1 -0
- package/dist/reactionRepository/internalApi/removeReaction.d.ts +2 -0
- package/dist/reactionRepository/internalApi/removeReaction.d.ts.map +1 -0
- package/dist/utils/linkedObject/messageLinkedObject.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/@types/core/payload.ts +1 -1
- package/src/@types/domains/message.ts +4 -0
- package/src/categoryRepository/internalApi/queryCategories.ts +2 -2
- package/src/messageRepository/utils/addReactionToMessage.ts +12 -0
- package/src/messageRepository/utils/removeReactionToMessage.ts +12 -0
- package/src/reactionRepository/internalApi/addReaction.ts +137 -0
- package/src/reactionRepository/internalApi/index.ts +2 -0
- package/src/reactionRepository/internalApi/removeReaction.ts +95 -0
- package/src/userRepository/observers/searchUserByDisplayName/SearchUserPaginationController.ts +1 -1
- package/src/utils/linkedObject/messageLinkedObject.ts +4 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addReactionToMessage.d.ts","sourceRoot":"","sources":["../../../src/messageRepository/utils/addReactionToMessage.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,iBAAkB,MAAM,WAAW,MAAM,eAAe,qBASxF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeReactionToMessage.d.ts","sourceRoot":"","sources":["../../../src/messageRepository/utils/removeReactionToMessage.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,WAAW,MAAM,eAAe,qBAS3F,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const addReaction: {
|
|
2
|
+
(referenceType: Amity.Reaction['referenceType'], referenceId: Amity.Reaction['referenceId'], reactionName: Amity.InternalReactor['reactionName'], referenceVersion?: number): Promise<boolean>;
|
|
3
|
+
optimistically(referenceType: Amity.ReactableType, referenceId: Amity.Reaction['referenceId'], reactionName: Amity.InternalReactor['reactionName']): boolean | undefined;
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=addReaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addReaction.d.ts","sourceRoot":"","sources":["../../../src/reactionRepository/internalApi/addReaction.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,WAAW;oBACP,MAAM,QAAQ,CAAC,eAAe,CAAC,eACjC,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,qBAChC,MAAM,GACxB,QAAQ,OAAO,CAAC;kCAoFF,MAAM,aAAa,eACrB,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,GAClD,OAAO,GAAG,SAAS;CANrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactionRepository/internalApi/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeReaction.d.ts","sourceRoot":"","sources":["../../../src/reactionRepository/internalApi/removeReaction.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,cAAc,kBACV,MAAM,QAAQ,CAAC,eAAe,CAAC,eACjC,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAC5B,MAAM,eAAe,CAAC,cAAc,CAAC,qBAChC,MAAM,KACxB,QAAQ,OAAO,CAoFjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/messageLinkedObject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messageLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/messageLinkedObject.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mBAAmB,YAAa,MAAM,eAAe,KAAG,MAAM,OAiB1E,CAAC"}
|
package/package.json
CHANGED
|
@@ -39,6 +39,7 @@ declare global {
|
|
|
39
39
|
Amity.ChannelMention | (Amity.UserMention & { userPublicIds: string[] })
|
|
40
40
|
>;
|
|
41
41
|
messageFeedId: Amity.RawSubChannel['messageFeedId'];
|
|
42
|
+
publicId: string;
|
|
42
43
|
messageId: string;
|
|
43
44
|
myReactions?: string[];
|
|
44
45
|
parentId?: string;
|
|
@@ -64,6 +65,7 @@ declare global {
|
|
|
64
65
|
editedAt?: Amity.timestamp;
|
|
65
66
|
parentId?: string;
|
|
66
67
|
messageId: string;
|
|
68
|
+
publicId: string;
|
|
67
69
|
subChannelId: Amity.SubChannel['subChannelId'];
|
|
68
70
|
channelType: Amity.Channel['type'];
|
|
69
71
|
uniqueId: string;
|
|
@@ -71,6 +73,8 @@ declare global {
|
|
|
71
73
|
deliveredCount: number;
|
|
72
74
|
referenceId?: string;
|
|
73
75
|
markRead: () => void;
|
|
76
|
+
addReaction: (reactionName: string) => Promise<boolean>;
|
|
77
|
+
removeReaction: (reactionName: string) => Promise<boolean>;
|
|
74
78
|
} & Amity.Content<T> &
|
|
75
79
|
Amity.Flaggable &
|
|
76
80
|
Amity.Mentionable<'user' | 'channel'> &
|
|
@@ -47,11 +47,11 @@ export const queryCategories = async (
|
|
|
47
47
|
'query',
|
|
48
48
|
{ ...params, includeDeleted, options } as Amity.Serializable,
|
|
49
49
|
];
|
|
50
|
-
pushToCache(cacheKey, { categories: categories
|
|
50
|
+
pushToCache(cacheKey, { categories: categories?.map(getResolver('category')), paging });
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
return {
|
|
54
|
-
data: categories,
|
|
54
|
+
data: categories ?? [],
|
|
55
55
|
cachedAt,
|
|
56
56
|
paging,
|
|
57
57
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { addReaction as _addReaction } from '~/reactionRepository/internalApi';
|
|
2
|
+
|
|
3
|
+
export const addReactionToMessage = (reactionName: string, message: Amity.InternalMessage) => {
|
|
4
|
+
const isMessageV3 = message.publicId !== message.messageId;
|
|
5
|
+
|
|
6
|
+
return _addReaction(
|
|
7
|
+
'message',
|
|
8
|
+
isMessageV3 ? message.publicId : message.messageId,
|
|
9
|
+
reactionName,
|
|
10
|
+
isMessageV3 ? 3 : 5,
|
|
11
|
+
);
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { removeReaction as _removeReaction } from '~/reactionRepository/internalApi';
|
|
2
|
+
|
|
3
|
+
export const removeReactionToMessage = (reactionName: string, message: Amity.InternalMessage) => {
|
|
4
|
+
const isMessageV3 = message.publicId !== message.messageId;
|
|
5
|
+
|
|
6
|
+
return _removeReaction(
|
|
7
|
+
'message',
|
|
8
|
+
isMessageV3 ? message.publicId : message.messageId,
|
|
9
|
+
reactionName,
|
|
10
|
+
isMessageV3 ? 3 : 5,
|
|
11
|
+
);
|
|
12
|
+
};
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api';
|
|
2
|
+
|
|
3
|
+
import { upsertInCache, pullFromCache } from '~/cache/api';
|
|
4
|
+
|
|
5
|
+
import { UNSYNCED_OBJECT_CACHED_AT_VALUE } from '~/utils/constants';
|
|
6
|
+
import { dispatchReactable } from '../utils/dispatchReactable';
|
|
7
|
+
import { fireEvent } from '~/core/events';
|
|
8
|
+
import { ASCApiError } from '~/core/errors';
|
|
9
|
+
|
|
10
|
+
export const addReaction = async (
|
|
11
|
+
referenceType: Amity.Reaction['referenceType'],
|
|
12
|
+
referenceId: Amity.Reaction['referenceId'],
|
|
13
|
+
reactionName: Amity.InternalReactor['reactionName'],
|
|
14
|
+
referenceVersion?: number,
|
|
15
|
+
): Promise<boolean> => {
|
|
16
|
+
const client = getActiveClient();
|
|
17
|
+
client.log('reaction/createReaction', {
|
|
18
|
+
referenceId,
|
|
19
|
+
referenceType,
|
|
20
|
+
reactionName,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
if (!['post', 'comment', 'story', 'message'].includes(referenceType))
|
|
24
|
+
throw new ASCApiError(
|
|
25
|
+
'The reference type is not valid. It should be one of post, comment, story, or message',
|
|
26
|
+
Amity.ServerError.BAD_REQUEST,
|
|
27
|
+
Amity.ErrorLevel.ERROR,
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
const { data } = await client.http.post<{ addedId: 'string' }>('/api/v2/reactions', {
|
|
31
|
+
referenceId,
|
|
32
|
+
referenceType,
|
|
33
|
+
reactionName,
|
|
34
|
+
referenceVersion,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
if (client.cache) {
|
|
38
|
+
const model = pullFromCache<Amity.Models[Amity.ReactableType]>([
|
|
39
|
+
referenceType,
|
|
40
|
+
'get',
|
|
41
|
+
referenceId,
|
|
42
|
+
]);
|
|
43
|
+
|
|
44
|
+
if (!model || model.data.myReactions?.includes(reactionName)) return true;
|
|
45
|
+
|
|
46
|
+
const updatedModel = {
|
|
47
|
+
...model.data,
|
|
48
|
+
reactionsCount: model.data.reactionsCount + 1,
|
|
49
|
+
myReactions: [...(model.data.myReactions ?? []), reactionName],
|
|
50
|
+
reactions: {
|
|
51
|
+
...model.data.reactions,
|
|
52
|
+
[reactionName]: (model.data.reactions[reactionName] ?? 0) + 1,
|
|
53
|
+
},
|
|
54
|
+
updatedAt: new Date().toISOString(),
|
|
55
|
+
} as Amity.Models[Amity.ReactableType];
|
|
56
|
+
|
|
57
|
+
if (referenceType === 'comment') {
|
|
58
|
+
fireEvent('local.comment.addReaction', {
|
|
59
|
+
comment: updatedModel as Amity.InternalComment,
|
|
60
|
+
reactor: {
|
|
61
|
+
userId: client.userId!,
|
|
62
|
+
reactionName,
|
|
63
|
+
reactionId: data.addedId,
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
if (referenceType === 'post') {
|
|
70
|
+
fireEvent('local.post.addReaction', {
|
|
71
|
+
post: updatedModel as Amity.InternalPost,
|
|
72
|
+
reactor: {
|
|
73
|
+
userId: client.userId!,
|
|
74
|
+
reactionName,
|
|
75
|
+
reactionId: data.addedId,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
if (referenceType === 'story') {
|
|
82
|
+
fireEvent('local.story.reactionAdded', {
|
|
83
|
+
story: updatedModel as Amity.InternalStory,
|
|
84
|
+
reactor: {
|
|
85
|
+
userId: client.userId!,
|
|
86
|
+
reactionName,
|
|
87
|
+
reactionId: data.addedId,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return true;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
addReaction.optimistically = (
|
|
99
|
+
referenceType: Amity.ReactableType,
|
|
100
|
+
referenceId: Amity.Reaction['referenceId'],
|
|
101
|
+
reactionName: Amity.InternalReactor['reactionName'],
|
|
102
|
+
): boolean | undefined => {
|
|
103
|
+
const client = getActiveClient();
|
|
104
|
+
client.log('reaction/createReaction.optimistically', {
|
|
105
|
+
referenceId,
|
|
106
|
+
referenceType,
|
|
107
|
+
reactionName,
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
if (!client.cache) return;
|
|
111
|
+
|
|
112
|
+
const model = pullFromCache<Amity.Models[Amity.ReactableType]>([
|
|
113
|
+
referenceType,
|
|
114
|
+
'get',
|
|
115
|
+
referenceId,
|
|
116
|
+
]);
|
|
117
|
+
|
|
118
|
+
if (!model?.data || model.data.myReactions?.includes(reactionName)) return;
|
|
119
|
+
|
|
120
|
+
const reaction = {
|
|
121
|
+
...model.data,
|
|
122
|
+
reactionsCount: model.data.reactionsCount + 1,
|
|
123
|
+
myReactions: [...(model.data.myReactions ?? []), reactionName],
|
|
124
|
+
reactions: {
|
|
125
|
+
...model.data.reactions,
|
|
126
|
+
[reactionName]: (model.data.reactions[reactionName] ?? 0) + 1,
|
|
127
|
+
},
|
|
128
|
+
} as Amity.Models[Amity.ReactableType];
|
|
129
|
+
|
|
130
|
+
upsertInCache([referenceType, 'get', referenceId], reaction, {
|
|
131
|
+
cachedAt: UNSYNCED_OBJECT_CACHED_AT_VALUE,
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
dispatchReactable(referenceType, reaction);
|
|
135
|
+
|
|
136
|
+
return reaction?.myReactions?.includes(reactionName) ?? false;
|
|
137
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api';
|
|
2
|
+
import { pullFromCache } from '~/cache/api';
|
|
3
|
+
import { fireEvent } from '~/core/events';
|
|
4
|
+
import { ASCApiError } from '~/core/errors';
|
|
5
|
+
|
|
6
|
+
export const removeReaction = async (
|
|
7
|
+
referenceType: Amity.Reaction['referenceType'],
|
|
8
|
+
referenceId: Amity.Reaction['referenceId'],
|
|
9
|
+
reactionName: Amity.InternalReactor['reactionName'],
|
|
10
|
+
referenceVersion?: number,
|
|
11
|
+
): Promise<boolean> => {
|
|
12
|
+
const client = getActiveClient();
|
|
13
|
+
client.log('reaction/removeReaction', {
|
|
14
|
+
referenceId,
|
|
15
|
+
referenceType,
|
|
16
|
+
reactionName,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
if (!['post', 'comment', 'story', 'message'].includes(referenceType))
|
|
20
|
+
throw new ASCApiError(
|
|
21
|
+
'The reference type is not valid. It should be one of post, comment, story, or message',
|
|
22
|
+
Amity.ServerError.BAD_REQUEST,
|
|
23
|
+
Amity.ErrorLevel.ERROR,
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const { data } = await client.http.delete<{ removedId: string }>(`/api/v2/reactions`, {
|
|
27
|
+
data: {
|
|
28
|
+
referenceId,
|
|
29
|
+
referenceType,
|
|
30
|
+
reactionName,
|
|
31
|
+
referenceVersion,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
if (client.cache) {
|
|
36
|
+
const model = pullFromCache<Amity.Models[Amity.ReactableType]>([
|
|
37
|
+
referenceType,
|
|
38
|
+
'get',
|
|
39
|
+
referenceId,
|
|
40
|
+
]);
|
|
41
|
+
|
|
42
|
+
if (!model) return true;
|
|
43
|
+
|
|
44
|
+
const updatedModel = {
|
|
45
|
+
...model.data,
|
|
46
|
+
reactionsCount: Math.max(0, model.data.reactionsCount - 1),
|
|
47
|
+
myReactions: (model.data.myReactions ?? []).filter(item => item !== reactionName),
|
|
48
|
+
reactions: {
|
|
49
|
+
...model.data.reactions,
|
|
50
|
+
[reactionName]: Math.max(0, (model.data.reactions[reactionName] ?? 0) - 1),
|
|
51
|
+
},
|
|
52
|
+
updatedAt: new Date().toISOString(),
|
|
53
|
+
} as Amity.Models[Amity.ReactableType];
|
|
54
|
+
|
|
55
|
+
if (referenceType === 'comment') {
|
|
56
|
+
fireEvent('local.comment.removeReaction', {
|
|
57
|
+
comment: updatedModel as Amity.InternalComment,
|
|
58
|
+
reactor: {
|
|
59
|
+
reactionId: data.removedId,
|
|
60
|
+
reactionName,
|
|
61
|
+
userId: client.userId!,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
if (referenceType === 'post') {
|
|
68
|
+
fireEvent('local.post.removeReaction', {
|
|
69
|
+
post: updatedModel as Amity.InternalPost,
|
|
70
|
+
reactor: {
|
|
71
|
+
reactionId: data.removedId,
|
|
72
|
+
reactionName,
|
|
73
|
+
userId: client.userId!,
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (referenceType === 'story') {
|
|
81
|
+
fireEvent('local.story.reactionAdded', {
|
|
82
|
+
story: updatedModel as Amity.InternalStory,
|
|
83
|
+
reactor: {
|
|
84
|
+
userId: client.userId!,
|
|
85
|
+
reactionName,
|
|
86
|
+
reactionId: data.removedId,
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return true;
|
|
95
|
+
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { pullFromCache } from '~/cache/api';
|
|
2
|
+
import { addReactionToMessage } from '~/messageRepository/utils/addReactionToMessage';
|
|
2
3
|
import { getMessageReadCount } from '~/messageRepository/utils/getMessageReadCount';
|
|
3
4
|
import { markReadMessage } from '~/messageRepository/utils/markReadMessage';
|
|
5
|
+
import { removeReactionToMessage } from '~/messageRepository/utils/removeReactionToMessage';
|
|
4
6
|
|
|
5
7
|
export const messageLinkedObject = (message: Amity.InternalMessage): Amity.Message => {
|
|
6
8
|
const { creatorPrivateId, ...rest } = message;
|
|
@@ -16,5 +18,7 @@ export const messageLinkedObject = (message: Amity.InternalMessage): Amity.Messa
|
|
|
16
18
|
return pullFromCache<Amity.InternalUser>(['user', 'get', message.creatorId])?.data;
|
|
17
19
|
},
|
|
18
20
|
markRead: () => markReadMessage(message),
|
|
21
|
+
addReaction: (reactionName: string) => addReactionToMessage(reactionName, message),
|
|
22
|
+
removeReaction: (reactionName: string) => removeReactionToMessage(reactionName, message),
|
|
19
23
|
};
|
|
20
24
|
};
|