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;
};
/**
* @description HTTP request to retrieve google sheets settings
* @return {Promise}
@@ -305,4 +304,4 @@ export async function postSheetSettings(data: GoogleSheet): Promise<GoogleSheet>
export async function getSheetstate(): Promise<GoogleSheetState> {
const res = await axios.get(`${ontimeURL}/sheet-state`);
return res.data;
}
}
@@ -1,4 +1,4 @@
import { ChangeEvent, useEffect,useRef, useState } from 'react';
import { ChangeEvent, useEffect, useRef, useState } from 'react';
import {
Button,
Input,
@@ -122,9 +122,7 @@ export default function SheetsModal(props: SheetsModalProps) {
};
const handlePushData = () => {
postPushSheet().then((data) => {
console.log(data);
});
postPushSheet().then((_) => {});
};
const handleFinalise = async () => {
@@ -169,13 +167,11 @@ export default function SheetsModal(props: SheetsModalProps) {
<ModalCloseButton />
<ModalBody>
{rundown && (
<>
<PreviewExcel
rundown={rundown ?? []}
project={project ?? projectDataPlaceholder}
userFields={userFields ?? userFieldsPlaceholder}
/>
</>
<PreviewExcel
rundown={rundown ?? []}
project={project ?? projectDataPlaceholder}
userFields={userFields ?? userFieldsPlaceholder}
/>
)}
{!rundown && (
<>
+1 -1
View File
@@ -125,4 +125,4 @@ router.get('/sheet-settings', getGoogleSheetSettings);
router.post('/sheet-settings', validateGoogleSheetSettings, postGoogleSheetSettings);
// 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 { GoogleSheetState } from 'ontime-types';
import { cellRequenstFromEvent, cellRequenstFromProjectData, getA1Notation } from './googleSheetUtils.js';
import { join } from 'path';
type ResponseOK = {
data: Partial<DatabaseModel>;
@@ -20,14 +21,20 @@ type ResponseOK = {
class sheet {
private static client: null | OAuth2Client = null;
private readonly scope = 'https://www.googleapis.com/auth/spreadsheets';
private readonly sheetsFolder = `${getAppDataPath()}/sheets`;
private readonly client_secret = `${this.sheetsFolder}/client_secret.json`;
private readonly sheetsFolder;
private readonly client_secret;
private static authUrl: null | string = null;
private worksheetId: number = 0;
private sheetId: string = '';
private range: string = '';
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);
}
@@ -213,19 +220,20 @@ class sheet {
public async saveClientSecrets(secrets: object) {
sheet.client = null;
sheet.authUrl = null;
ensureDirectory(this.sheetsFolder);
if (
'client_id' in secrets ||
!('project_id' in secrets) ||
!('auth_uri' in secrets) ||
!('token_uri' in secrets) ||
!('auth_provider_x509_cert_url' in secrets) ||
!('client_secret' in secrets) ||
!('redirect_uris' in secrets)
!('client_id' in secrets['installed']) ||
!('project_id' in secrets['installed']) ||
!('auth_uri' in secrets['installed']) ||
!('token_uri' in secrets['installed']) ||
!('auth_provider_x509_cert_url' in secrets['installed']) ||
!('client_secret' in secrets['installed']) ||
!('redirect_uris' in secrets['installed'])
) {
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}`),
);
}
/**