diff options
| author | Manti <67705577+mantikafasi@users.noreply.github.com> | 2023-05-28 23:03:06 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-28 22:03:06 +0200 |
| commit | 3e3d05fc26a634b17549c9473bd8aeebb7dec4ec (patch) | |
| tree | a3591b0b0dea888f24d1ce8e58584b4447f62dde /src/plugins/reviewDB/Utils | |
| parent | 6300198a5463ab38da81906bda634addf4c8a369 (diff) | |
| download | Vencord-3e3d05fc26a634b17549c9473bd8aeebb7dec4ec.tar.gz Vencord-3e3d05fc26a634b17549c9473bd8aeebb7dec4ec.tar.bz2 Vencord-3e3d05fc26a634b17549c9473bd8aeebb7dec4ec.zip | |
ReviewDB: Add Review Modal & Pagination (#1174)
Co-authored-by: V <vendicated@riseup.net>
Diffstat (limited to 'src/plugins/reviewDB/Utils')
| -rw-r--r-- | src/plugins/reviewDB/Utils/ReviewDBAPI.ts | 123 | ||||
| -rw-r--r-- | src/plugins/reviewDB/Utils/Utils.tsx | 89 |
2 files changed, 0 insertions, 212 deletions
diff --git a/src/plugins/reviewDB/Utils/ReviewDBAPI.ts b/src/plugins/reviewDB/Utils/ReviewDBAPI.ts deleted file mode 100644 index 62c89f5..0000000 --- a/src/plugins/reviewDB/Utils/ReviewDBAPI.ts +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Vencord, a modification for Discord's desktop app - * Copyright (c) 2022 Vendicated and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. -*/ - -import { Settings } from "@api/Settings"; - -import { Review } from "../entities/Review"; -import { ReviewDBUser } from "../entities/User"; -import { authorize, showToast } from "./Utils"; - -const API_URL = "https://manti.vendicated.dev"; - -const getToken = () => Settings.plugins.ReviewDB.token; - -interface Response { - success: boolean, - message: string; - reviews: Review[]; - updated: boolean; -} - -const WarningFlag = 0b00000010; - -export async function getReviews(id: string): Promise<Review[]> { - var flags = 0; - if (!Settings.plugins.ReviewDB.showWarning) flags |= WarningFlag; - const req = await fetch(API_URL + `/api/reviewdb/users/${id}/reviews?flags=${flags}`); - - const res = (req.status === 200) ? await req.json() as Response : { success: false, message: "An Error occured while fetching reviews. Please try again later.", reviews: [], updated: false }; - if (!res.success) { - showToast(res.message); - return [ - { - id: 0, - comment: "An Error occured while fetching reviews. Please try again later.", - star: 0, - timestamp: 0, - sender: { - id: 0, - username: "Error", - profilePhoto: "https://cdn.discordapp.com/attachments/1045394533384462377/1084900598035513447/646808599204593683.png?size=128", - discordID: "0", - badges: [] - } - } - ]; - } - return res.reviews; -} - -export async function addReview(review: any): Promise<Response | null> { - review.token = getToken(); - - if (!review.token) { - showToast("Please authorize to add a review."); - authorize(); - return null; - } - - return fetch(API_URL + `/api/reviewdb/users/${review.userid}/reviews`, { - method: "PUT", - body: JSON.stringify(review), - headers: { - "Content-Type": "application/json", - } - }) - .then(r => r.json()) - .then(res => { - showToast(res.message); - return res ?? null; - }); -} - -export function deleteReview(id: number): Promise<Response> { - return fetch(API_URL + `/api/reviewdb/users/${id}/reviews`, { - method: "DELETE", - headers: new Headers({ - "Content-Type": "application/json", - Accept: "application/json", - }), - body: JSON.stringify({ - token: getToken(), - reviewid: id - }) - }).then(r => r.json()); -} - -export async function reportReview(id: number) { - const res = await fetch(API_URL + "/api/reviewdb/reports", { - method: "PUT", - headers: new Headers({ - "Content-Type": "application/json", - Accept: "application/json", - }), - body: JSON.stringify({ - reviewid: id, - token: getToken() - }) - }).then(r => r.json()) as Response; - showToast(await res.message); -} - -export function getCurrentUserInfo(token: string): Promise<ReviewDBUser> { - return fetch(API_URL + "/api/reviewdb/users", { - body: JSON.stringify({ token }), - method: "POST", - }) - .then(r => r.json()); -} diff --git a/src/plugins/reviewDB/Utils/Utils.tsx b/src/plugins/reviewDB/Utils/Utils.tsx deleted file mode 100644 index 42426b2..0000000 --- a/src/plugins/reviewDB/Utils/Utils.tsx +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Vencord, a modification for Discord's desktop app - * Copyright (c) 2022 Vendicated and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. -*/ - -import { Settings } from "@api/Settings"; -import { Logger } from "@utils/Logger"; -import { openModal } from "@utils/modal"; -import { findByProps } from "@webpack"; -import { FluxDispatcher, React, SelectedChannelStore, Toasts, UserUtils } from "@webpack/common"; - -import { Review } from "../entities/Review"; -import { UserType } from "../entities/User"; - -export async function openUserProfileModal(userId: string) { - await UserUtils.fetchUser(userId); - - await FluxDispatcher.dispatch({ - type: "USER_PROFILE_MODAL_OPEN", - userId, - channelId: SelectedChannelStore.getChannelId(), - analyticsLocation: "Explosive Hotel" - }); -} - -export function authorize(callback?: any) { - const { OAuth2AuthorizeModal } = findByProps("OAuth2AuthorizeModal"); - - openModal((props: any) => - <OAuth2AuthorizeModal - {...props} - scopes={["identify"]} - responseType="code" - redirectUri="https://manti.vendicated.dev/api/reviewdb/auth" - permissions={0n} - clientId="915703782174752809" - cancelCompletesFlow={false} - callback={async (u: string) => { - try { - const url = new URL(u); - url.searchParams.append("clientMod", "vencord"); - const res = await fetch(url, { - headers: new Headers({ Accept: "application/json" }) - }); - const { token, success } = await res.json(); - if (success) { - Settings.plugins.ReviewDB.token = token; - showToast("Successfully logged in!"); - callback?.(); - } else if (res.status === 1) { - showToast("An Error occurred while logging in."); - } - } catch (e) { - new Logger("ReviewDB").error("Failed to authorize", e); - } - }} - /> - ); -} - -export function showToast(text: string) { - Toasts.show({ - type: Toasts.Type.MESSAGE, - message: text, - id: Toasts.genId(), - options: { - position: Toasts.Position.BOTTOM - }, - }); -} - -export const sleep = (ms: number) => new Promise(r => setTimeout(r, ms)); - -export function canDeleteReview(review: Review, userId: string) { - if (review.sender.discordID === userId || Settings.plugins.ReviewDB.user?.type === UserType.Admin) return true; -} |
