infra: add linting and formatting for js projects (#230)
* wip * wip * wip * format * wip(mobile): lint and format * cleanup * nits * nits * idiomatic react * nit * format all root files
This commit was merged in pull request #230.
This commit is contained in:
+51
-17
@@ -1,10 +1,17 @@
|
||||
import { app, BrowserWindow, desktopCapturer, ipcMain, screen, session, shell } from 'electron';
|
||||
import {
|
||||
app,
|
||||
BrowserWindow,
|
||||
desktopCapturer,
|
||||
ipcMain,
|
||||
screen,
|
||||
session,
|
||||
shell,
|
||||
} from 'electron';
|
||||
import path from 'node:path';
|
||||
import started from 'electron-squirrel-startup';
|
||||
import { updateElectronApp, UpdateSourceType } from 'update-electron-app';
|
||||
|
||||
import { appConfig } from './config/env';
|
||||
import { logError } from './lib/errors';
|
||||
import { safeHandle } from './main/ipc-utils';
|
||||
import { initSentryMain } from './main/sentry';
|
||||
|
||||
@@ -14,8 +21,8 @@ if (app.isPackaged) {
|
||||
updateElectronApp({
|
||||
updateSource: {
|
||||
type: UpdateSourceType.StaticStorage,
|
||||
baseUrl: `https://storage.googleapis.com/flowy-releases/llink/${process.platform}/${process.arch}`
|
||||
}
|
||||
baseUrl: `https://storage.googleapis.com/flowy-releases/llink/${process.platform}/${process.arch}`,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -78,7 +85,8 @@ function hardenWindow(win: BrowserWindow) {
|
||||
(cmdOrCtrl && input.shift && key === 'c') ||
|
||||
(cmdOrCtrl && input.shift && key === 'j');
|
||||
const isReload = cmdOrCtrl && (key === 'r' || key === 'f5');
|
||||
const isZoom = cmdOrCtrl && (key === '=' || key === '+' || key === '-' || key === '0');
|
||||
const isZoom =
|
||||
cmdOrCtrl && (key === '=' || key === '+' || key === '-' || key === '0');
|
||||
|
||||
if (app.isPackaged && (isDevtools || isReload)) {
|
||||
event.preventDefault();
|
||||
@@ -173,7 +181,10 @@ const createAutoplayWindow = () => {
|
||||
autoplayWindow.loadURL(AUTOPLAY_WINDOW_VITE_DEV_SERVER_URL);
|
||||
} else {
|
||||
autoplayWindow.loadFile(
|
||||
path.join(__dirname, `../renderer/${AUTOPLAY_WINDOW_VITE_NAME}/index.html`),
|
||||
path.join(
|
||||
__dirname,
|
||||
`../renderer/${AUTOPLAY_WINDOW_VITE_NAME}/index.html`,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -208,7 +219,10 @@ const createHuddleWindow = () => {
|
||||
// before React attached its listener.
|
||||
const loadHuddleWindow = (data: { token: string; serverUrl: string }) => {
|
||||
if (!huddleWindow) return;
|
||||
const params = new URLSearchParams({ token: data.token, serverUrl: data.serverUrl });
|
||||
const params = new URLSearchParams({
|
||||
token: data.token,
|
||||
serverUrl: data.serverUrl,
|
||||
});
|
||||
const hash = params.toString();
|
||||
if (HUDDLE_WINDOW_VITE_DEV_SERVER_URL) {
|
||||
huddleWindow.loadURL(`${HUDDLE_WINDOW_VITE_DEV_SERVER_URL}#${hash}`);
|
||||
@@ -256,7 +270,10 @@ const createScreenRecordWindow = () => {
|
||||
screenRecordWindow.loadURL(SCREEN_RECORD_WINDOW_VITE_DEV_SERVER_URL);
|
||||
} else {
|
||||
screenRecordWindow.loadFile(
|
||||
path.join(__dirname, `../renderer/${SCREEN_RECORD_WINDOW_VITE_NAME}/index.html`),
|
||||
path.join(
|
||||
__dirname,
|
||||
`../renderer/${SCREEN_RECORD_WINDOW_VITE_NAME}/index.html`,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -286,11 +303,14 @@ ipcMain.on('window:fullscreen', (event) => {
|
||||
});
|
||||
|
||||
// Secondary window IPC handlers
|
||||
ipcMain.on('window:open-huddle', (_event, data: { token: string; serverUrl: string }) => {
|
||||
createHuddleWindow();
|
||||
loadHuddleWindow(data);
|
||||
huddleWindow?.focus();
|
||||
});
|
||||
ipcMain.on(
|
||||
'window:open-huddle',
|
||||
(_event, data: { token: string; serverUrl: string }) => {
|
||||
createHuddleWindow();
|
||||
loadHuddleWindow(data);
|
||||
huddleWindow?.focus();
|
||||
},
|
||||
);
|
||||
ipcMain.on('window:close-huddle', () => {
|
||||
huddleWindow?.close();
|
||||
});
|
||||
@@ -347,7 +367,9 @@ ipcMain.on('autoplay:play', (_event, payload) => {
|
||||
if (!autoplayWindow) createAutoplayWindow();
|
||||
if (!autoplayWindow) return;
|
||||
|
||||
const isVideo = typeof payload?.mimeType === 'string' && payload.mimeType.startsWith('video/');
|
||||
const isVideo =
|
||||
typeof payload?.mimeType === 'string' &&
|
||||
payload.mimeType.startsWith('video/');
|
||||
autoplayWindow.setSize(320, isVideo ? 260 : 88);
|
||||
positionAutoplayWindow();
|
||||
|
||||
@@ -399,7 +421,10 @@ ipcMain.on(
|
||||
if (!url.startsWith('http://') && !url.startsWith('https://')) return;
|
||||
|
||||
const dlSession = win.webContents.session;
|
||||
const onWillDownload = (_e: Electron.Event, item: Electron.DownloadItem) => {
|
||||
const onWillDownload = (
|
||||
_e: Electron.Event,
|
||||
item: Electron.DownloadItem,
|
||||
) => {
|
||||
if (filename) item.setSaveDialogOptions({ defaultPath: filename });
|
||||
dlSession.removeListener('will-download', onWillDownload);
|
||||
};
|
||||
@@ -420,8 +445,17 @@ app.on('ready', () => {
|
||||
(details, callback) => {
|
||||
const headers = { ...details.responseHeaders };
|
||||
headers['access-control-allow-origin'] = ['*'];
|
||||
headers['access-control-allow-headers'] = ['Content-Type', 'Authorization'];
|
||||
headers['access-control-allow-methods'] = ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'];
|
||||
headers['access-control-allow-headers'] = [
|
||||
'Content-Type',
|
||||
'Authorization',
|
||||
];
|
||||
headers['access-control-allow-methods'] = [
|
||||
'GET',
|
||||
'POST',
|
||||
'PUT',
|
||||
'DELETE',
|
||||
'OPTIONS',
|
||||
];
|
||||
|
||||
if (details.method === 'OPTIONS') {
|
||||
callback({ responseHeaders: headers, statusLine: 'HTTP/1.1 200 OK' });
|
||||
|
||||
Reference in New Issue
Block a user