@codingfactory/socialkit-vue 0.6.0 → 0.7.2

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.
Files changed (37) hide show
  1. package/dist/index.d.ts +6 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/services/circles.d.ts.map +1 -1
  6. package/dist/services/circles.js +12 -1
  7. package/dist/services/circles.js.map +1 -1
  8. package/dist/services/gamification.d.ts +87 -0
  9. package/dist/services/gamification.d.ts.map +1 -0
  10. package/dist/services/gamification.js +263 -0
  11. package/dist/services/gamification.js.map +1 -0
  12. package/dist/stores/discussion.d.ts.map +1 -1
  13. package/dist/stores/discussion.js +59 -53
  14. package/dist/stores/discussion.js.map +1 -1
  15. package/dist/stores/gamification.d.ts +2875 -0
  16. package/dist/stores/gamification.d.ts.map +1 -0
  17. package/dist/stores/gamification.js +1136 -0
  18. package/dist/stores/gamification.js.map +1 -0
  19. package/dist/types/api.d.ts +1 -0
  20. package/dist/types/api.d.ts.map +1 -1
  21. package/dist/types/gamification.d.ts +267 -0
  22. package/dist/types/gamification.d.ts.map +1 -0
  23. package/dist/types/gamification.js +5 -0
  24. package/dist/types/gamification.js.map +1 -0
  25. package/dist/types/reputation.d.ts +55 -0
  26. package/dist/types/reputation.d.ts.map +1 -0
  27. package/dist/types/reputation.js +5 -0
  28. package/dist/types/reputation.js.map +1 -0
  29. package/package.json +4 -2
  30. package/src/index.ts +65 -0
  31. package/src/services/circles.ts +13 -1
  32. package/src/services/gamification.ts +432 -0
  33. package/src/stores/discussion.ts +75 -54
  34. package/src/stores/gamification.ts +1565 -0
  35. package/src/types/api.ts +1 -0
  36. package/src/types/gamification.ts +286 -0
  37. package/src/types/reputation.ts +78 -0
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Configurable gamification service for SocialKit-powered frontends.
3
+ */
4
+ const createQuestCompletionIdempotencyKey = (questId) => {
5
+ const randomPart = typeof globalThis.crypto?.randomUUID === 'function'
6
+ ? globalThis.crypto.randomUUID()
7
+ : Math.random().toString(36).slice(2);
8
+ return `quest-complete:${questId}:${randomPart}`;
9
+ };
10
+ function createDefaultWebSocket(url) {
11
+ if (typeof WebSocket === 'undefined') {
12
+ throw new Error('WebSocket is unavailable in this environment');
13
+ }
14
+ return new WebSocket(url);
15
+ }
16
+ class GamificationService {
17
+ client;
18
+ webSocketUrl;
19
+ webSocketFactory;
20
+ reconnectIntervalMs;
21
+ logger;
22
+ debug;
23
+ ws = null;
24
+ reconnectInterval = null;
25
+ listeners = new Map();
26
+ constructor(client, webSocketUrl, webSocketFactory, reconnectIntervalMs, logger, debug) {
27
+ this.client = client;
28
+ this.webSocketUrl = webSocketUrl;
29
+ this.webSocketFactory = webSocketFactory;
30
+ this.reconnectIntervalMs = reconnectIntervalMs;
31
+ this.logger = logger;
32
+ this.debug = debug;
33
+ }
34
+ async getUserStats(userId) {
35
+ const endpoint = userId
36
+ ? `/v1/gamification/users/${userId}/reputation`
37
+ : '/v1/gamification/users/me/reputation';
38
+ const response = await this.client.get(endpoint);
39
+ return response.data;
40
+ }
41
+ async getUserReputation(userId) {
42
+ return this.getUserStats(userId);
43
+ }
44
+ async getUserStreak() {
45
+ const response = await this.client.get('/v1/gamification/users/me/streak');
46
+ return response.data;
47
+ }
48
+ async getTransactions(options) {
49
+ const params = new URLSearchParams();
50
+ if (options?.limit) {
51
+ params.append('limit', options.limit.toString());
52
+ }
53
+ if (options?.offset) {
54
+ params.append('offset', options.offset.toString());
55
+ }
56
+ const query = params.toString();
57
+ const url = query.length > 0
58
+ ? `/v1/gamification/users/me/transactions?${query}`
59
+ : '/v1/gamification/users/me/transactions';
60
+ const response = await this.client.get(url);
61
+ return response.data;
62
+ }
63
+ async getReputationSnapshots(options) {
64
+ const params = new URLSearchParams();
65
+ if (options?.period) {
66
+ params.append('period', options.period);
67
+ }
68
+ const query = params.toString();
69
+ const url = query.length > 0
70
+ ? `/v1/gamification/users/me/reputation/snapshots?${query}`
71
+ : '/v1/gamification/users/me/reputation/snapshots';
72
+ const response = await this.client.get(url);
73
+ return response.data;
74
+ }
75
+ async getPrivilegesCatalog() {
76
+ const response = await this.client.get('/v1/gamification/privileges');
77
+ return response.data;
78
+ }
79
+ async getAchievements(options) {
80
+ const params = new URLSearchParams();
81
+ if (options?.status && options.status !== 'all') {
82
+ params.append('status', options.status);
83
+ }
84
+ if (options?.page) {
85
+ params.append('page', options.page.toString());
86
+ }
87
+ const response = await this.client.get(`/v1/gamification/achievements?${params.toString()}`);
88
+ return response.data;
89
+ }
90
+ async claimAchievement(achievementId) {
91
+ const response = await this.client.post(`/v1/gamification/achievements/${achievementId}/claim`);
92
+ return response.data;
93
+ }
94
+ async getQuests(options) {
95
+ const params = new URLSearchParams();
96
+ if (options?.status && options.status !== 'all') {
97
+ params.append('status', options.status);
98
+ }
99
+ if (options?.page) {
100
+ params.append('page', options.page.toString());
101
+ }
102
+ const endpoint = options?.status === 'available'
103
+ ? '/v1/gamification/quests/available'
104
+ : '/v1/gamification/quests/my-quests';
105
+ const response = await this.client.get(`${endpoint}?${params.toString()}`);
106
+ return response.data;
107
+ }
108
+ async claimQuestReward(questId) {
109
+ const idempotencyKey = createQuestCompletionIdempotencyKey(questId);
110
+ const response = await this.client.post(`/v1/gamification/quests/${questId}/complete`, undefined, {
111
+ headers: {
112
+ 'Idempotency-Key': idempotencyKey,
113
+ },
114
+ });
115
+ return response.data;
116
+ }
117
+ async abandonQuest(questId) {
118
+ await this.client.delete(`/v1/gamification/quests/${questId}/abandon`);
119
+ }
120
+ async getLeaderboard(options) {
121
+ const params = new URLSearchParams();
122
+ if (options?.period) {
123
+ const normalizedPeriod = options.period === 'all_time' ? 'all-time' : options.period;
124
+ params.append('period', normalizedPeriod);
125
+ }
126
+ if (options?.limit) {
127
+ params.append('limit', options.limit.toString());
128
+ }
129
+ if (options?.offset) {
130
+ params.append('offset', options.offset.toString());
131
+ }
132
+ if (options?.spaceId) {
133
+ params.append('space_id', options.spaceId);
134
+ }
135
+ const query = params.toString();
136
+ const url = query.length > 0
137
+ ? `/v1/gamification/leaderboard?${query}`
138
+ : '/v1/gamification/leaderboard';
139
+ const response = await this.client.get(url);
140
+ return response.data;
141
+ }
142
+ async getUserRank() {
143
+ const response = await this.client.get('/v1/gamification/users/me/rank');
144
+ return response.data;
145
+ }
146
+ async getRewards(options) {
147
+ const params = new URLSearchParams();
148
+ if (options?.status && options.status !== 'all') {
149
+ params.append('status', options.status);
150
+ }
151
+ if (options?.page) {
152
+ params.append('page', options.page.toString());
153
+ }
154
+ const query = params.toString();
155
+ const endpoint = query.length > 0
156
+ ? `/v1/gamification/rewards?${query}`
157
+ : '/v1/gamification/rewards';
158
+ const response = await this.client.get(endpoint);
159
+ return { data: response.data };
160
+ }
161
+ async redeemReward(rewardId) {
162
+ const response = await this.client.post(`/v1/gamification/rewards/${rewardId}/redeem`);
163
+ return response.data;
164
+ }
165
+ connectWebSocket() {
166
+ if (this.ws && this.ws.readyState === this.ws.OPEN) {
167
+ return this.ws;
168
+ }
169
+ const socketUrl = typeof this.webSocketUrl === 'string' && this.webSocketUrl.length > 0
170
+ ? this.webSocketUrl
171
+ : null;
172
+ if (socketUrl === null) {
173
+ return null;
174
+ }
175
+ try {
176
+ this.ws = this.webSocketFactory(`${socketUrl}/gamification`);
177
+ this.ws.onopen = () => {
178
+ this.debugLog('Gamification WebSocket connected');
179
+ if (this.reconnectInterval) {
180
+ clearInterval(this.reconnectInterval);
181
+ this.reconnectInterval = null;
182
+ }
183
+ };
184
+ this.ws.onmessage = (event) => {
185
+ try {
186
+ const payload = typeof event.data === 'string'
187
+ ? JSON.parse(event.data)
188
+ : event.data;
189
+ this.handleWebSocketMessage(payload);
190
+ }
191
+ catch (error) {
192
+ this.logger.error('Failed to parse WebSocket message:', error);
193
+ }
194
+ };
195
+ this.ws.onclose = () => {
196
+ this.debugLog('Gamification WebSocket disconnected');
197
+ this.attemptReconnect();
198
+ };
199
+ this.ws.onerror = (error) => {
200
+ this.logger.error('Gamification WebSocket error:', error);
201
+ };
202
+ return this.ws;
203
+ }
204
+ catch (error) {
205
+ this.logger.error('Failed to connect WebSocket:', error);
206
+ return null;
207
+ }
208
+ }
209
+ disconnectWebSocket() {
210
+ if (this.ws) {
211
+ this.ws.close();
212
+ this.ws = null;
213
+ }
214
+ if (this.reconnectInterval) {
215
+ clearInterval(this.reconnectInterval);
216
+ this.reconnectInterval = null;
217
+ }
218
+ this.listeners.clear();
219
+ }
220
+ subscribe(event, callback) {
221
+ if (!this.listeners.has(event)) {
222
+ this.listeners.set(event, new Set());
223
+ }
224
+ this.listeners.get(event)?.add(callback);
225
+ }
226
+ unsubscribe(event, callback) {
227
+ this.listeners.get(event)?.delete(callback);
228
+ }
229
+ debugLog(message, ...args) {
230
+ if (!this.debug) {
231
+ return;
232
+ }
233
+ this.logger.debug(message, ...args);
234
+ }
235
+ attemptReconnect() {
236
+ if (this.reconnectInterval) {
237
+ return;
238
+ }
239
+ this.reconnectInterval = setInterval(() => {
240
+ this.debugLog('Gamification WebSocket reconnect attempt');
241
+ this.connectWebSocket();
242
+ }, this.reconnectIntervalMs);
243
+ }
244
+ handleWebSocketMessage(data) {
245
+ const listeners = this.listeners.get(data.type);
246
+ if (listeners) {
247
+ listeners.forEach((listener) => {
248
+ listener(data);
249
+ });
250
+ }
251
+ const updateListeners = this.listeners.get('update');
252
+ if (updateListeners) {
253
+ updateListeners.forEach((listener) => {
254
+ listener(data);
255
+ });
256
+ }
257
+ }
258
+ }
259
+ export function createGamificationService(config) {
260
+ const { client, webSocketUrl = null, webSocketFactory = createDefaultWebSocket, reconnectIntervalMs = 5000, logger = console, debug = false, } = config;
261
+ return new GamificationService(client, webSocketUrl, webSocketFactory, reconnectIntervalMs, logger, debug);
262
+ }
263
+ //# sourceMappingURL=gamification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gamification.js","sourceRoot":"","sources":["../../src/services/gamification.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"discussion.d.ts","sourceRoot":"","sources":["../../src/stores/discussion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discussion.d.ts","sourceRoot":"","sources":["../../src/stores/discussion.ts"],"names":[],"mappings":"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"}
@@ -117,6 +117,7 @@ export function createDiscussionStoreDefinition(config) {
117
117
  const threads = ref([]);
118
118
  const currentThread = ref(null);
119
119
  const replies = ref([]);
120
+ const currentReplySort = ref('best');
120
121
  const spacesLoadingState = createLoadingState();
121
122
  const threadsLoadingState = createLoadingState();
122
123
  const repliesLoadingState = createLoadingState();
@@ -690,6 +691,7 @@ export function createDiscussionStoreDefinition(config) {
690
691
  });
691
692
  };
692
693
  const filteredReplyBatch = filterOpeningReplies(loadedReplyBatch);
694
+ currentReplySort.value = sortBy;
693
695
  if (cursor) {
694
696
  replies.value = mergeUniqueById(replies.value, filteredReplyBatch);
695
697
  }
@@ -734,6 +736,57 @@ export function createDiscussionStoreDefinition(config) {
734
736
  }
735
737
  }
736
738
  }
739
+ function insertTopLevelReply(reply) {
740
+ if (currentReplySort.value === 'new') {
741
+ replies.value.unshift(reply);
742
+ return;
743
+ }
744
+ replies.value.push(reply);
745
+ }
746
+ function insertReplyIntoActiveThread(reply, parentReplyId) {
747
+ const existingReplyIndex = replies.value.findIndex((candidate) => candidate.id === reply.id);
748
+ if (existingReplyIndex !== -1) {
749
+ const existingReply = replies.value[existingReplyIndex];
750
+ if (existingReply) {
751
+ replies.value[existingReplyIndex] = {
752
+ ...existingReply,
753
+ ...reply,
754
+ };
755
+ }
756
+ return false;
757
+ }
758
+ if (parentReplyId) {
759
+ const parentIndex = replies.value.findIndex((candidate) => candidate.id === parentReplyId);
760
+ if (parentIndex !== -1) {
761
+ const parent = replies.value[parentIndex];
762
+ const parentDepth = parent?.depth ?? parent?.display_depth ?? 0;
763
+ reply.depth = parentDepth + 1;
764
+ reply.display_depth = parentDepth + 1;
765
+ reply.parent_reply_id = parentReplyId;
766
+ let insertIndex = parentIndex + 1;
767
+ while (insertIndex < replies.value.length) {
768
+ const nextReply = replies.value[insertIndex];
769
+ const nextDepth = nextReply?.depth ?? nextReply?.display_depth ?? 0;
770
+ if (nextDepth <= parentDepth) {
771
+ break;
772
+ }
773
+ insertIndex += 1;
774
+ }
775
+ replies.value.splice(insertIndex, 0, reply);
776
+ if (parent) {
777
+ parent.reply_count = (parent.reply_count ?? 0) + 1;
778
+ parent.children_count = (parent.children_count ?? 0) + 1;
779
+ }
780
+ return true;
781
+ }
782
+ replies.value.push(reply);
783
+ return true;
784
+ }
785
+ reply.depth = 0;
786
+ reply.display_depth = 0;
787
+ insertTopLevelReply(reply);
788
+ return true;
789
+ }
737
790
  async function createThread(spaceSlug, input) {
738
791
  cleanupRealtimeChannels();
739
792
  loading.value = true;
@@ -861,51 +914,7 @@ export function createDiscussionStoreDefinition(config) {
861
914
  }
862
915
  let didInsertReply = false;
863
916
  if (newReply) {
864
- const existingReplyIndex = replies.value.findIndex((reply) => reply.id === newReply.id);
865
- if (existingReplyIndex !== -1) {
866
- const existingReply = replies.value[existingReplyIndex];
867
- if (existingReply) {
868
- replies.value[existingReplyIndex] = {
869
- ...existingReply,
870
- ...newReply,
871
- };
872
- }
873
- }
874
- else if (input.parent_id) {
875
- const parentIndex = replies.value.findIndex((reply) => reply.id === input.parent_id);
876
- if (parentIndex !== -1) {
877
- const parent = replies.value[parentIndex];
878
- const parentDepth = parent?.depth ?? parent?.display_depth ?? 0;
879
- newReply.depth = parentDepth + 1;
880
- newReply.display_depth = parentDepth + 1;
881
- newReply.parent_reply_id = input.parent_id;
882
- let insertIndex = parentIndex + 1;
883
- while (insertIndex < replies.value.length) {
884
- const reply = replies.value[insertIndex];
885
- const replyDepth = reply?.depth ?? reply?.display_depth ?? 0;
886
- if (replyDepth <= parentDepth) {
887
- break;
888
- }
889
- insertIndex += 1;
890
- }
891
- replies.value.splice(insertIndex, 0, newReply);
892
- didInsertReply = true;
893
- if (parent) {
894
- parent.reply_count = (parent.reply_count ?? 0) + 1;
895
- parent.children_count = (parent.children_count ?? 0) + 1;
896
- }
897
- }
898
- else {
899
- replies.value.push(newReply);
900
- didInsertReply = true;
901
- }
902
- }
903
- else {
904
- newReply.depth = 0;
905
- newReply.display_depth = 0;
906
- replies.value.push(newReply);
907
- didInsertReply = true;
908
- }
917
+ didInsertReply = insertReplyIntoActiveThread(newReply, input.parent_id);
909
918
  }
910
919
  if (didInsertReply && currentThread.value?.id === threadId) {
911
920
  currentThread.value.reply_count += 1;
@@ -1067,14 +1076,11 @@ export function createDiscussionStoreDefinition(config) {
1067
1076
  }
1068
1077
  return normalized;
1069
1078
  })();
1070
- const already = replies.value.some((reply) => reply.id === payload.id);
1071
- if (!already) {
1072
- replies.value.push(normalizedPayload);
1073
- if (currentThread.value && payload.id && !realtimeCountedReplyIds.has(payload.id)) {
1074
- realtimeCountedReplyIds.add(payload.id);
1075
- currentThread.value.reply_count = (currentThread.value.reply_count || 0) + 1;
1076
- currentThread.value.last_activity_at = payload.created_at ?? new Date().toISOString();
1077
- }
1079
+ const didInsertReply = insertReplyIntoActiveThread(normalizedPayload, normalizedPayload.parent_reply_id ?? null);
1080
+ if (didInsertReply && currentThread.value && payload.id && !realtimeCountedReplyIds.has(payload.id)) {
1081
+ realtimeCountedReplyIds.add(payload.id);
1082
+ currentThread.value.reply_count = (currentThread.value.reply_count || 0) + 1;
1083
+ currentThread.value.last_activity_at = payload.created_at ?? new Date().toISOString();
1078
1084
  }
1079
1085
  }
1080
1086
  function handleRealtimeReplyReaction(payload) {