mirror of
https://github.com/Equicord/Equicord.git
synced 2025-06-23 21:37:03 -04:00
Bring back ReviewDB (#2097)
Changes from old version: - You can now delete reviews on your own profile - You can now block up to 50 users. This will prevent them from leaving reviews on your profile Co-authored-by: V <vendicated@riseup.net>
This commit is contained in:
parent
2ab1c50c73
commit
8bd54173db
13 changed files with 1516 additions and 0 deletions
78
src/plugins/reviewDB/auth.tsx
Normal file
78
src/plugins/reviewDB/auth.tsx
Normal file
|
@ -0,0 +1,78 @@
|
|||
/*
|
||||
* Vencord, a Discord client mod
|
||||
* Copyright (c) 2023 Vendicated and contributors
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { DataStore } from "@api/index";
|
||||
import { Logger } from "@utils/Logger";
|
||||
import { openModal } from "@utils/modal";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
import { showToast, Toasts, UserStore } from "@webpack/common";
|
||||
|
||||
import { ReviewDBAuth } from "./entities";
|
||||
|
||||
const DATA_STORE_KEY = "rdb-auth";
|
||||
|
||||
const OAuth = findByPropsLazy("OAuth2AuthorizeModal");
|
||||
|
||||
export let Auth: ReviewDBAuth = {};
|
||||
|
||||
export async function initAuth() {
|
||||
Auth = await getAuth() ?? {};
|
||||
}
|
||||
|
||||
export async function getAuth(): Promise<ReviewDBAuth | undefined> {
|
||||
const auth = await DataStore.get(DATA_STORE_KEY);
|
||||
return auth?.[UserStore.getCurrentUser()?.id];
|
||||
}
|
||||
|
||||
export async function getToken() {
|
||||
const auth = await getAuth();
|
||||
return auth?.token;
|
||||
}
|
||||
|
||||
export async function updateAuth(newAuth: ReviewDBAuth) {
|
||||
return DataStore.update(DATA_STORE_KEY, auth => {
|
||||
auth ??= {};
|
||||
Auth = auth[UserStore.getCurrentUser().id] ??= {};
|
||||
|
||||
if (newAuth.token) Auth.token = newAuth.token;
|
||||
if (newAuth.user) Auth.user = newAuth.user;
|
||||
|
||||
return auth;
|
||||
});
|
||||
}
|
||||
|
||||
export function authorize(callback?: any) {
|
||||
openModal(props =>
|
||||
<OAuth.OAuth2AuthorizeModal
|
||||
{...props}
|
||||
scopes={["identify"]}
|
||||
responseType="code"
|
||||
redirectUri="https://manti.vendicated.dev/api/reviewdb/auth"
|
||||
permissions={0n}
|
||||
clientId="915703782174752809"
|
||||
cancelCompletesFlow={false}
|
||||
callback={async (response: any) => {
|
||||
try {
|
||||
const url = new URL(response.location);
|
||||
url.searchParams.append("clientMod", "vencord");
|
||||
const res = await fetch(url, {
|
||||
headers: new Headers({ Accept: "application/json" })
|
||||
});
|
||||
const { token, success } = await res.json();
|
||||
if (success) {
|
||||
updateAuth({ token });
|
||||
showToast("Successfully logged in!");
|
||||
callback?.();
|
||||
} else if (res.status === 1) {
|
||||
showToast("An Error occurred while logging in.", Toasts.Type.FAILURE);
|
||||
}
|
||||
} catch (e) {
|
||||
new Logger("ReviewDB").error("Failed to authorize", e);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue