diff --git a/src/api/notification.js b/src/api/notification.js index 3707318e..81b82107 100644 --- a/src/api/notification.js +++ b/src/api/notification.js @@ -1,17 +1,5 @@ -import { useGalleryStore, useNotificationStore } from '../stores'; -import { notificationRequest } from '.'; import { request } from '../service/request'; - -/** - * @returns {any} - */ -function getGalleryStore() { - return useGalleryStore(); -} - -function getNotificationStore() { - return useNotificationStore(); -} +import { useGalleryStore } from '../stores'; const notificationReq = { /** @typedef {{ @@ -120,7 +108,7 @@ const notificationReq = { return request(`invite/${receiverUserId}/photo`, { uploadImageLegacy: true, postData: JSON.stringify(params), - imageData: getGalleryStore().uploadImage + imageData: useGalleryStore().uploadImage }).then((json) => { const args = { json, @@ -149,7 +137,7 @@ const notificationReq = { return request(`requestInvite/${receiverUserId}/photo`, { uploadImageLegacy: true, postData: JSON.stringify(params), - imageData: getGalleryStore().uploadImage + imageData: useGalleryStore().uploadImage }).then((json) => { const args = { json, @@ -178,7 +166,7 @@ const notificationReq = { return request(`invite/${inviteId}/response/photo`, { uploadImageLegacy: true, postData: JSON.stringify(params), - imageData: getGalleryStore().uploadImage, + imageData: useGalleryStore().uploadImage, inviteId }).then((json) => { const args = { @@ -200,27 +188,13 @@ const notificationReq = { { method: 'PUT' } - ) - .then((json) => { - const args = { - json, - params - }; - getNotificationStore().handleNotificationAccept(args); - return args; - }) - .catch((err) => { - // if friend request could not be found, delete it - if (err && err.message && err.message.includes('404')) { - getNotificationStore().handleNotificationHide( - params.notificationId - ); - } - return { - json: null, - params - }; - }); + ).then((json) => { + const args = { + json, + params + }; + return args; + }); }, /** @@ -238,9 +212,6 @@ const notificationReq = { json, params }; - getNotificationStore().handleNotificationHide( - params.notificationId - ); return args; }); }, @@ -289,24 +260,13 @@ const notificationReq = { return request(`notifications/${params.notificationId}/respond`, { method: 'POST', params - }) - .then((json) => { - const args = { - json, - params - }; - return args; - }) - .catch(() => { - getNotificationStore().handleNotificationV2Hide( - params.notificationId - ); - notificationRequest.hideNotificationV2(params.notificationId); - return { - json: null, - params - }; - }); + }).then((json) => { + const args = { + json, + params + }; + return args; + }); }, hideNotificationV2(notificationId) { @@ -322,35 +282,6 @@ const notificationReq = { return args; }); } - - // sendInviteGalleryPhoto(params, receiverUserId) { - // return request(`invite/${receiverUserId}/photo`, { - // method: 'POST', - // params - // }).then((json) => { - // const args = { - // json, - // params, - // receiverUserId - // }; - // API.$emit('NOTIFICATION:INVITE:GALLERYPHOTO:SEND', args); - // return args; - // }); - // }, - - // API.clearNotifications = function () { - // return request('auth/user/notifications/clear', { - // method: 'PUT' - // }).then((json) => { - // var args = { - // json - // }; - // // FIXME: NOTIFICATION:CLEAR 핸들링 - // this.$emit('NOTIFICATION:CLEAR', args); - // return args; - // }); - // }; }; -// #endregion export default notificationReq; diff --git a/src/components/dialogs/UserDialog/UserDialog.vue b/src/components/dialogs/UserDialog/UserDialog.vue index 6a8aba9b..b0b721db 100644 --- a/src/components/dialogs/UserDialog/UserDialog.vue +++ b/src/components/dialogs/UserDialog/UserDialog.vue @@ -1303,6 +1303,7 @@ useLocationStore, useModalStore, useModerationStore, + useNotificationStore, useUiStore, useUserStore, useWorldStore @@ -1971,9 +1972,18 @@ }); handleSendFriendRequest(args); } else { - notificationRequest.acceptFriendRequestNotification({ - notificationId: key - }); + notificationRequest + .acceptFriendRequestNotification({ + notificationId: key + }) + .then((args) => { + useNotificationStore().handleNotificationAccept(args); + }) + .catch((err) => { + if (err && err.message && err.message.includes('404')) { + useNotificationStore().handleNotificationHide(key); + } + }); } break; case 'Decline Friend Request': @@ -1984,9 +1994,13 @@ }); handleCancelFriendRequest(args); } else { - notificationRequest.hideNotification({ - notificationId: key - }); + notificationRequest + .hideNotification({ + notificationId: key + }) + .then(() => { + useNotificationStore().handleNotificationHide(key); + }); } break; case 'Cancel Friend Request': { diff --git a/src/stores/notification/index.js b/src/stores/notification/index.js index bd43fd46..190b9b13 100644 --- a/src/stores/notification/index.js +++ b/src/stores/notification/index.js @@ -358,9 +358,13 @@ export const useNotificationStore = defineStore('Notification', () => { }); AppDebug.errorNoty.show(); console.log(text); - notificationRequest.hideNotification({ - notificationId: ref.id - }); + notificationRequest + .hideNotification({ + notificationId: ref.id + }) + .then(() => { + handleNotificationHide(ref.id); + }); return _args; }) .catch((err) => { @@ -1173,9 +1177,18 @@ export const useNotificationStore = defineStore('Notification', () => { }) .then(({ ok }) => { if (!ok) return; - notificationRequest.acceptFriendRequestNotification({ - notificationId: row.id - }); + notificationRequest + .acceptFriendRequestNotification({ + notificationId: row.id + }) + .then((args) => { + handleNotificationAccept(args); + }) + .catch((err) => { + if (err && err.message && err.message.includes('404')) { + handleNotificationHide(row.id); + } + }); }) .catch(() => {}); } @@ -1188,9 +1201,13 @@ export const useNotificationStore = defineStore('Notification', () => { ); handleNotificationHide(row.id); } else { - notificationRequest.hideNotification({ - notificationId: row.id - }); + notificationRequest + .hideNotification({ + notificationId: row.id + }) + .then(() => { + handleNotificationHide(row.id); + }); } } @@ -1237,9 +1254,13 @@ export const useNotificationStore = defineStore('Notification', () => { ) .then((_args) => { toast(t('message.invite.sent')); - notificationRequest.hideNotification({ - notificationId: row.id - }); + notificationRequest + .hideNotification({ + notificationId: row.id + }) + .then(() => { + handleNotificationHide(row.id); + }); return _args; }); }); @@ -1257,15 +1278,21 @@ export const useNotificationStore = defineStore('Notification', () => { } } const params = { notificationId, responseType, responseData }; - notificationRequest.sendNotificationResponse(params).then((args) => { - console.log('Notification response', args); - if (!args.json) return; - handleNotificationV2Hide(notificationId); - new Noty({ - type: 'success', - text: escapeTag(args.json) - }).show(); - }); + notificationRequest + .sendNotificationResponse(params) + .then((args) => { + console.log('Notification response', args); + if (!args.json) return; + handleNotificationV2Hide(notificationId); + new Noty({ + type: 'success', + text: escapeTag(args.json) + }).show(); + }) + .catch(() => { + handleNotificationV2Hide(notificationId); + notificationRequest.hideNotificationV2(notificationId); + }); } function deleteNotificationLog(row) { diff --git a/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue b/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue index 4bd53aae..e7d42ab7 100644 --- a/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue +++ b/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue @@ -39,7 +39,7 @@ import { useI18n } from 'vue-i18n'; import { inviteMessagesRequest, notificationRequest } from '../../../api'; - import { useGalleryStore } from '../../../stores'; + import { useGalleryStore, useNotificationStore } from '../../../stores'; const { t } = useI18n(); const galleryStore = useGalleryStore(); @@ -101,9 +101,13 @@ toast.error(t('message.error')); }) .then((args) => { - notificationRequest.hideNotification({ - notificationId: I.invite.id - }); + notificationRequest + .hideNotification({ + notificationId: I.invite.id + }) + .then(() => { + useNotificationStore().handleNotificationHide(I.invite.id); + }); toast.success(t('message.invite.response_sent')); return args; }) @@ -118,9 +122,13 @@ toast.error(t('message.error')); }) .then((args) => { - notificationRequest.hideNotification({ - notificationId: I.invite.id - }); + notificationRequest + .hideNotification({ + notificationId: I.invite.id + }) + .then(() => { + useNotificationStore().handleNotificationHide(I.invite.id); + }); toast.success(t('message.invite.response_sent')); return args; }) diff --git a/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue b/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue index 67f5bfc3..609653b7 100644 --- a/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue +++ b/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue @@ -26,8 +26,8 @@ import { toast } from 'vue-sonner'; import { useI18n } from 'vue-i18n'; + import { useGalleryStore, useNotificationStore } from '../../../stores'; import { notificationRequest } from '../../../api'; - import { useGalleryStore } from '../../../stores'; const { t } = useI18n(); @@ -65,9 +65,13 @@ toast.error(t('message.error')); }) .then((args) => { - notificationRequest.hideNotification({ - notificationId: D.invite.id - }); + notificationRequest + .hideNotification({ + notificationId: D.invite.id + }) + .then(() => { + useNotificationStore().handleNotificationHide(D.invite.id); + }); toast.success(t('message.invite.response_photo_sent')); return args; }) @@ -82,9 +86,13 @@ toast.error(t('message.error')); }) .then((args) => { - notificationRequest.hideNotification({ - notificationId: D.invite.id - }); + notificationRequest + .hideNotification({ + notificationId: D.invite.id + }) + .then(() => { + useNotificationStore().handleNotificationHide(D.invite.id); + }); toast.success(t('message.invite.response_sent')); return args; })