From 2e536a4de7c08cf2870f72f02200c254ef8d2205 Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Mon, 13 Nov 2023 16:34:58 +0100 Subject: [PATCH] Update sponsor check --- src/commands/Backers.ts | 91 ++++++++++++++++-------------------- src/helpers/PanelSettings.ts | 1 - 2 files changed, 40 insertions(+), 52 deletions(-) diff --git a/src/commands/Backers.ts b/src/commands/Backers.ts index 8e8689b4..17431e56 100644 --- a/src/commands/Backers.ts +++ b/src/commands/Backers.ts @@ -1,6 +1,6 @@ -import { commands, ExtensionContext } from 'vscode'; +import { authentication, commands, ExtensionContext } from 'vscode'; import { COMMAND_NAME, CONTEXT } from '../constants'; -import { Extension } from '../helpers'; +import { Extension, Logger } from '../helpers'; import { Credentials } from '../services/Credentials'; import fetch from 'node-fetch'; import { Dashboard } from './Dashboard'; @@ -8,70 +8,59 @@ import { SettingsListener } from '../listeners/panel'; import { PanelProvider } from '../panelWebView/PanelProvider'; export class Backers { - private static creds: Credentials | null = null; - public static async init(context: ExtensionContext) { - Backers.creds = new Credentials(); - await Backers.creds.initialize(context, Backers.tryUsernameCheck); - - Backers.tryUsernameCheck(); + Backers.checkSponsor(); context.subscriptions.push( commands.registerCommand(COMMAND_NAME.authenticate, async () => { - Backers.tryUsernameCheck(); + await authentication.getSession('github', ['read:user'], { createIfNone: true }); + Backers.checkSponsor(); }) ); } - public static async tryUsernameCheck() { - try { - const username = await Backers.getUsername(); - Backers.validate(username || ''); - } catch (e) { - Backers.validate(''); - } - } - - public static async getUsername() { - const octokit = await Backers.creds?.getOctokit(); - const user = await octokit?.users.getAuthenticated(); - - if (user?.data?.login) { - return user?.data?.login; - } - - return; - } - - public static async validate(username: string) { + public static async checkSponsor() { const ext = Extension.getInstance(); + const githubAuth = await authentication.getSession('github', ['read:user'], { silent: true }); + if (githubAuth && githubAuth.accessToken) { + try { + const isBeta = ext.isBetaVersion(); + const response = await fetch( + `https://${isBeta ? `beta.` : ``}frontmatter.codes/api/v2/backers`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + accept: 'application/json' + }, + body: JSON.stringify({ + token: githubAuth.accessToken + }) + } + ); - if (!username) { - ext.setState(CONTEXT.backer, undefined, 'global'); - } + if (response.ok) { + const prevData = await ext.getState(CONTEXT.backer, 'global'); + await ext.setState(CONTEXT.backer, true, 'global'); - const isBeta = ext.isBetaVersion(); + if (!prevData) { + const PanelView = PanelProvider.getInstance(); + if (PanelView.visible) { + SettingsListener.getSettings(); + } - const response = await fetch( - `https://${isBeta ? `beta.` : ``}frontmatter.codes/api/backers?backer=${username}` - ); - - if (response.ok) { - const prevData = await ext.getState(CONTEXT.backer, 'global'); - await ext.setState(CONTEXT.backer, true, 'global'); - - if (!prevData) { - const PanelView = PanelProvider.getInstance(); - if (PanelView.visible) { - SettingsListener.getSettings(); - } - - if (Dashboard.isOpen) { - Dashboard.reload(); + if (Dashboard.isOpen) { + Dashboard.reload(); + } + } + } else { + ext.setState(CONTEXT.backer, false, 'global'); } + } catch (e) { + Logger.error(`Failed to check if user is a sponsor: ${(e as Error).message}`); } } else { - ext.setState(CONTEXT.backer, false, 'global'); + ext.setState(CONTEXT.backer, undefined, 'global'); } } } diff --git a/src/helpers/PanelSettings.ts b/src/helpers/PanelSettings.ts index 160d7d9c..121b4760 100644 --- a/src/helpers/PanelSettings.ts +++ b/src/helpers/PanelSettings.ts @@ -29,7 +29,6 @@ import { SETTING_SLUG_PREFIX, SETTING_SLUG_SUFFIX, SETTING_SLUG_UPDATE_FILE_NAME, - SETTING_TAXONOMY_CONTENT_TYPES, SETTING_TAXONOMY_CUSTOM, SETTING_TAXONOMY_FIELD_GROUPS, SETTING_GIT_ENABLED,