fix key check and ensureDirectory on startup

This commit is contained in:
arc-alex
2023-12-12 14:25:22 +01:00
parent a98bd0f4a4
commit a7a7a7d886
4 changed files with 28 additions and 25 deletions
+1 -2
View File
@@ -279,7 +279,6 @@ export const postPushSheet = async () => {
return response.data.data; return response.data.data;
}; };
/** /**
* @description HTTP request to retrieve google sheets settings * @description HTTP request to retrieve google sheets settings
* @return {Promise} * @return {Promise}
@@ -305,4 +304,4 @@ export async function postSheetSettings(data: GoogleSheet): Promise<GoogleSheet>
export async function getSheetstate(): Promise<GoogleSheetState> { export async function getSheetstate(): Promise<GoogleSheetState> {
const res = await axios.get(`${ontimeURL}/sheet-state`); const res = await axios.get(`${ontimeURL}/sheet-state`);
return res.data; return res.data;
} }
@@ -1,4 +1,4 @@
import { ChangeEvent, useEffect,useRef, useState } from 'react'; import { ChangeEvent, useEffect, useRef, useState } from 'react';
import { import {
Button, Button,
Input, Input,
@@ -122,9 +122,7 @@ export default function SheetsModal(props: SheetsModalProps) {
}; };
const handlePushData = () => { const handlePushData = () => {
postPushSheet().then((data) => { postPushSheet().then((_) => {});
console.log(data);
});
}; };
const handleFinalise = async () => { const handleFinalise = async () => {
@@ -169,13 +167,11 @@ export default function SheetsModal(props: SheetsModalProps) {
<ModalCloseButton /> <ModalCloseButton />
<ModalBody> <ModalBody>
{rundown && ( {rundown && (
<> <PreviewExcel
<PreviewExcel rundown={rundown ?? []}
rundown={rundown ?? []} project={project ?? projectDataPlaceholder}
project={project ?? projectDataPlaceholder} userFields={userFields ?? userFieldsPlaceholder}
userFields={userFields ?? userFieldsPlaceholder} />
/>
</>
)} )}
{!rundown && ( {!rundown && (
<> <>
+1 -1
View File
@@ -125,4 +125,4 @@ router.get('/sheet-settings', getGoogleSheetSettings);
router.post('/sheet-settings', validateGoogleSheetSettings, postGoogleSheetSettings); router.post('/sheet-settings', validateGoogleSheetSettings, postGoogleSheetSettings);
// create route between controller and '/ontime/sheet-state' endpoint // create route between controller and '/ontime/sheet-state' endpoint
router.get('/sheet-state', getGoogleSheetState); router.get('/sheet-state', getGoogleSheetState);
+19 -11
View File
@@ -12,6 +12,7 @@ import { ensureDirectory } from './fileManagement.js';
import { DataProvider } from '../classes/data-provider/DataProvider.js'; import { DataProvider } from '../classes/data-provider/DataProvider.js';
import { GoogleSheetState } from 'ontime-types'; import { GoogleSheetState } from 'ontime-types';
import { cellRequenstFromEvent, cellRequenstFromProjectData, getA1Notation } from './googleSheetUtils.js'; import { cellRequenstFromEvent, cellRequenstFromProjectData, getA1Notation } from './googleSheetUtils.js';
import { join } from 'path';
type ResponseOK = { type ResponseOK = {
data: Partial<DatabaseModel>; data: Partial<DatabaseModel>;
@@ -20,14 +21,20 @@ type ResponseOK = {
class sheet { class sheet {
private static client: null | OAuth2Client = null; private static client: null | OAuth2Client = null;
private readonly scope = 'https://www.googleapis.com/auth/spreadsheets'; private readonly scope = 'https://www.googleapis.com/auth/spreadsheets';
private readonly sheetsFolder = `${getAppDataPath()}/sheets`; private readonly sheetsFolder;
private readonly client_secret = `${this.sheetsFolder}/client_secret.json`; private readonly client_secret;
private static authUrl: null | string = null; private static authUrl: null | string = null;
private worksheetId: number = 0; private worksheetId: number = 0;
private sheetId: string = ''; private sheetId: string = '';
private range: string = ''; private range: string = '';
constructor() { constructor() {
const appDataPath = getAppDataPath();
if (appDataPath === '') {
throw new Error('Could not resolve public folder for platform');
}
this.sheetsFolder = join(appDataPath, 'sheets');
this.client_secret = join(this.sheetsFolder, 'client_secret.json');
ensureDirectory(this.sheetsFolder); ensureDirectory(this.sheetsFolder);
} }
@@ -213,19 +220,20 @@ class sheet {
public async saveClientSecrets(secrets: object) { public async saveClientSecrets(secrets: object) {
sheet.client = null; sheet.client = null;
sheet.authUrl = null; sheet.authUrl = null;
ensureDirectory(this.sheetsFolder);
if ( if (
'client_id' in secrets || !('client_id' in secrets['installed']) ||
!('project_id' in secrets) || !('project_id' in secrets['installed']) ||
!('auth_uri' in secrets) || !('auth_uri' in secrets['installed']) ||
!('token_uri' in secrets) || !('token_uri' in secrets['installed']) ||
!('auth_provider_x509_cert_url' in secrets) || !('auth_provider_x509_cert_url' in secrets['installed']) ||
!('client_secret' in secrets) || !('client_secret' in secrets['installed']) ||
!('redirect_uris' in secrets) !('redirect_uris' in secrets['installed'])
) { ) {
throw new Error('Sheet slient secret is missing some keys'); throw new Error('Sheet slient secret is missing some keys');
} }
await writeFile(this.client_secret, JSON.stringify(secrets), 'utf-8'); await writeFile(this.client_secret, JSON.stringify(secrets), 'utf-8').catch((err) =>
logger.error(LogOrigin.Server, `${err}`),
);
} }
/** /**