mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-22 07:29:08 +00:00
fix key check and ensureDirectory on startup
This commit is contained in:
@@ -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 && (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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}`),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user