mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-10 02:13:49 +02:00
* refactor: dialogs * fix: storeAvatarImage * FriendLog.vue * FriendLog.vue * FriendLog.vue * GameLog.vue * fix: next day button jumping to the wrong date * sync master * fix: launchGame * Notification.vue * Feed.vue * Search.vue * Profile.vue * PlayerList.vue * Login.vue * utils * update dialog * del gameLog.pug * fix * fix: group role cannot be displayed currently * fix: "Hide Friends in Same Instance" hides players in unrelated private instances (#1210) * fix * fix: "Hide Friends in Same Instance" does not work when "Split Favorite Friends" is enabled * fix Notification.vue message * fix: deleteFavoriteNoConfirm * fix: feed status style * fix: infinite loading when deleting note * fix: private players will not be hidden when 'Hide Friends in Same Instance', and 'Hide Friends in Same Instance' will not work when 'Split Favorite Friends'
307 lines
8.5 KiB
JavaScript
307 lines
8.5 KiB
JavaScript
// #region | API: Notification
|
|
|
|
const notificationReq = {
|
|
/** @typedef {{
|
|
* n: number,
|
|
* offset: number,
|
|
* sent: boolean,
|
|
* type: string,
|
|
* // (ISO8601 or 'five_minutes_ago')
|
|
* after: 'five_minutes_ago' | (string & {})
|
|
* }} NotificationFetchParameter
|
|
*/
|
|
|
|
/**
|
|
*
|
|
* @param {NotificationFetchParameter} params
|
|
* @returns {Promise<{json: any, params}>}
|
|
*/
|
|
getNotifications(params) {
|
|
return window.API.call('auth/user/notifications', {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
window.API.$emit('NOTIFICATION:LIST', args);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
getHiddenFriendRequests(params) {
|
|
return window.API.call('auth/user/notifications', {
|
|
method: 'GET',
|
|
params: {
|
|
type: 'friendRequest',
|
|
hidden: true,
|
|
...params
|
|
}
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
window.API.$emit('NOTIFICATION:LIST:HIDDEN', args);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
getNotificationsV2(params) {
|
|
return window.API.call('notifications', {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
window.API.$emit('NOTIFICATION:V2:LIST', args);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* string that represents valid serialized JSON of T's value
|
|
* @template T=any
|
|
* @typedef {string} JsonString
|
|
*/
|
|
|
|
/**
|
|
* @param {{
|
|
* receiverUserId: string,
|
|
* type: string,
|
|
* message: string,
|
|
* seen: boolean,
|
|
* details: JsonString<any>
|
|
* }} params
|
|
* @param receiverUserId
|
|
* @return { Promise<{json: any, params}> }
|
|
*/
|
|
sendInvite(params, receiverUserId) {
|
|
return window.API.call(`invite/${receiverUserId}`, {
|
|
method: 'POST',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params,
|
|
receiverUserId
|
|
};
|
|
window.API.$emit('NOTIFICATION:INVITE:SEND', args);
|
|
return args;
|
|
});
|
|
},
|
|
sendInvitePhoto(params, receiverUserId) {
|
|
return window.API.call(`invite/${receiverUserId}/photo`, {
|
|
uploadImageLegacy: true,
|
|
postData: JSON.stringify(params),
|
|
imageData: window.$app.uploadImage
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params,
|
|
receiverUserId
|
|
};
|
|
window.API.$emit('NOTIFICATION:INVITE:PHOTO:SEND', args);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
sendRequestInvite(params, receiverUserId) {
|
|
return window.API.call(`requestInvite/${receiverUserId}`, {
|
|
method: 'POST',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params,
|
|
receiverUserId
|
|
};
|
|
window.API.$emit('NOTIFICATION:REQUESTINVITE:SEND', args);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
sendRequestInvitePhoto(params, receiverUserId) {
|
|
return window.API.call(`requestInvite/${receiverUserId}/photo`, {
|
|
uploadImageLegacy: true,
|
|
postData: JSON.stringify(params),
|
|
imageData: window.$app.uploadImage
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params,
|
|
receiverUserId
|
|
};
|
|
window.API.$emit('NOTIFICATION:REQUESTINVITE:PHOTO:SEND', args);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
sendInviteResponse(params, inviteId) {
|
|
return window.API.call(`invite/${inviteId}/response`, {
|
|
method: 'POST',
|
|
params,
|
|
inviteId
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params,
|
|
inviteId
|
|
};
|
|
window.API.$emit('INVITE:RESPONSE:SEND', args);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
sendInviteResponsePhoto(params, inviteId) {
|
|
return window.API.call(`invite/${inviteId}/response/photo`, {
|
|
uploadImageLegacy: true,
|
|
postData: JSON.stringify(params),
|
|
imageData: window.$app.uploadImage,
|
|
inviteId
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params,
|
|
inviteId
|
|
};
|
|
window.API.$emit('INVITE:RESPONSE:PHOTO:SEND', args);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{ notificationId: string }} params
|
|
* @return { Promise<{json: any, params}> }
|
|
*/
|
|
acceptFriendRequestNotification(params) {
|
|
return window.API.call(
|
|
`auth/user/notifications/${params.notificationId}/accept`,
|
|
{
|
|
method: 'PUT'
|
|
}
|
|
)
|
|
.then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
window.API.$emit('NOTIFICATION:ACCEPT', args);
|
|
return args;
|
|
})
|
|
.catch((err) => {
|
|
// if friend request could not be found, delete it
|
|
if (err && err.message && err.message.includes('404')) {
|
|
window.API.$emit('NOTIFICATION:HIDE', { params });
|
|
}
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{ notificationId: string }} params
|
|
* @return { Promise<{json: any, params}> }
|
|
*/
|
|
hideNotification(params) {
|
|
return window.API.call(
|
|
`auth/user/notifications/${params.notificationId}/hide`,
|
|
{
|
|
method: 'PUT'
|
|
}
|
|
).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
window.API.$emit('NOTIFICATION:HIDE', args);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
// ------------------- need to test -------------------
|
|
|
|
/**
|
|
* @param {{
|
|
* notificationId: string,
|
|
* responseType: string,
|
|
* responseData: string
|
|
* }} params
|
|
* @return { Promise<{json: any, params}> }
|
|
*/
|
|
sendNotificationResponse(params) {
|
|
return window.API.call(
|
|
`notifications/${params.notificationId}/respond`,
|
|
{
|
|
method: 'POST',
|
|
params
|
|
}
|
|
)
|
|
.then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
window.API.$emit('NOTIFICATION:RESPONSE', args);
|
|
return args;
|
|
})
|
|
.catch((err) => {
|
|
// TODO: need to test
|
|
// something went wrong, lets assume it's already expired
|
|
window.API.$emit('NOTIFICATION:HIDE', { params });
|
|
notificationReq.hideNotificationV2(params.notificationId);
|
|
throw err;
|
|
});
|
|
},
|
|
// use in sendNotificationResponse
|
|
hideNotificationV2(notificationId) {
|
|
return window.API.call(`notifications/${notificationId}`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params: {
|
|
notificationId
|
|
}
|
|
};
|
|
// useless
|
|
// window.API.$emit('NOTIFICATION:V2:HIDE', args);
|
|
return args;
|
|
});
|
|
}
|
|
|
|
// ------------------ look like no place use these requests ------------------
|
|
|
|
// sendInviteGalleryPhoto(params, receiverUserId) {
|
|
// return window.API.call(`invite/${receiverUserId}/photo`, {
|
|
// method: 'POST',
|
|
// params
|
|
// }).then((json) => {
|
|
// const args = {
|
|
// json,
|
|
// params,
|
|
// receiverUserId
|
|
// };
|
|
// window.API.$emit('NOTIFICATION:INVITE:GALLERYPHOTO:SEND', args);
|
|
// return args;
|
|
// });
|
|
// },
|
|
|
|
// API.clearNotifications = function () {
|
|
// return this.call('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;
|