aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/reviewDB/Utils
diff options
context:
space:
mode:
authorManti <67705577+mantikafasi@users.noreply.github.com>2023-05-28 23:03:06 +0300
committerGitHub <noreply@github.com>2023-05-28 22:03:06 +0200
commit3e3d05fc26a634b17549c9473bd8aeebb7dec4ec (patch)
treea3591b0b0dea888f24d1ce8e58584b4447f62dde /src/plugins/reviewDB/Utils
parent6300198a5463ab38da81906bda634addf4c8a369 (diff)
downloadVencord-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.ts123
-rw-r--r--src/plugins/reviewDB/Utils/Utils.tsx89
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;
-}