mirror of
https://github.com/tiddly-gittly/TidGi-Desktop.git
synced 2026-01-21 20:11:50 -08:00
34 lines
1.5 KiB
TypeScript
34 lines
1.5 KiB
TypeScript
/* eslint-disable n/no-callback-literal */
|
|
import { session } from 'electron';
|
|
|
|
import { isMac } from '@/helpers/system';
|
|
import { IPreferences } from '@services/preferences/interface';
|
|
import { IWorkspace } from '@services/workspaces/interface';
|
|
|
|
export function setupViewSession(workspace: IWorkspace, preferences: IPreferences) {
|
|
const { shareWorkspaceBrowsingData, spellcheck, spellcheckLanguages } = preferences;
|
|
|
|
// configure session, proxy & ad blocker
|
|
const partitionId = shareWorkspaceBrowsingData ? 'persist:shared' : `persist:${workspace.id}`;
|
|
// prepare configs for start a WebContentsView that loads wiki's web content
|
|
// session
|
|
const sessionOfView = session.fromPartition(partitionId);
|
|
// spellchecker
|
|
if (spellcheck && !isMac) {
|
|
sessionOfView.setSpellCheckerLanguages(spellcheckLanguages);
|
|
}
|
|
sessionOfView.webRequest.onBeforeSendHeaders((details, callback) => {
|
|
assignFakeUserAgent(details);
|
|
callback({ cancel: false, requestHeaders: details.requestHeaders });
|
|
});
|
|
return sessionOfView;
|
|
}
|
|
|
|
const FAKE_USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36';
|
|
// pretending we are sending request from same origin using a Chrome browser. So image site won't block our request.
|
|
function assignFakeUserAgent(details: Electron.OnBeforeSendHeadersListenerDetails) {
|
|
const url = new URL(details.url);
|
|
details.requestHeaders.Origin = url.origin;
|
|
details.requestHeaders.Referer = details.url;
|
|
details.requestHeaders['User-Agent'] = FAKE_USER_AGENT;
|
|
}
|