diff --git a/apps/client/src/common/api/ontimeApi.ts b/apps/client/src/common/api/ontimeApi.ts index f00c292c5..51ff6ce1e 100644 --- a/apps/client/src/common/api/ontimeApi.ts +++ b/apps/client/src/common/api/ontimeApi.ts @@ -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 export async function getSheetstate(): Promise { const res = await axios.get(`${ontimeURL}/sheet-state`); return res.data; -} \ No newline at end of file +} diff --git a/apps/client/src/features/modals/sheets-modal/SheetsModal.tsx b/apps/client/src/features/modals/sheets-modal/SheetsModal.tsx index 211016e18..4a0483e77 100644 --- a/apps/client/src/features/modals/sheets-modal/SheetsModal.tsx +++ b/apps/client/src/features/modals/sheets-modal/SheetsModal.tsx @@ -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) { {rundown && ( - <> - - + )} {!rundown && ( <> diff --git a/apps/server/src/routes/ontimeRouter.ts b/apps/server/src/routes/ontimeRouter.ts index 22f8de418..ef5086713 100644 --- a/apps/server/src/routes/ontimeRouter.ts +++ b/apps/server/src/routes/ontimeRouter.ts @@ -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); \ No newline at end of file +router.get('/sheet-state', getGoogleSheetState); diff --git a/apps/server/src/utils/sheetsAuth.ts b/apps/server/src/utils/sheetsAuth.ts index 0abd70a0b..6e0f247db 100644 --- a/apps/server/src/utils/sheetsAuth.ts +++ b/apps/server/src/utils/sheetsAuth.ts @@ -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; @@ -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}`), + ); } /**