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:
Arjun Patel
2026-06-02 07:44:24 -07:00
committed by GitHub
parent 2fe562ce2b
commit a8a0b7db1b
258 changed files with 7822 additions and 5195 deletions
+51 -17
View File
@@ -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' });