Hide PWA app from Spotlight
Reviewed By: LukeDefeo Differential Revision: D50411182 fbshipit-source-id: 46c089c69aefb58f85a861c7898ee355f094e03c
This commit is contained in:
committed by
Facebook GitHub Bot
parent
a8be443670
commit
aea77cc4da
@@ -58,6 +58,7 @@ import {flipperDataFolder, flipperSettingsFolder} from './utils/paths';
|
||||
import {DebuggableDevice} from './devices/DebuggableDevice';
|
||||
import {jfUpload} from './fb-stubs/jf';
|
||||
import path from 'path';
|
||||
import {movePWA} from './utils/findInstallation';
|
||||
|
||||
const {access, copyFile, mkdir, unlink, stat, readlink, readFile, writeFile} =
|
||||
promises;
|
||||
@@ -597,6 +598,9 @@ export class FlipperServerImpl implements FlipperServer {
|
||||
'environment-info': async () => {
|
||||
return this.config.environmentInfo;
|
||||
},
|
||||
'move-pwa': async () => {
|
||||
await movePWA();
|
||||
},
|
||||
};
|
||||
|
||||
registerDevice(device: ServerDevice) {
|
||||
|
||||
@@ -13,6 +13,7 @@ export * from './tracker';
|
||||
export {loadLauncherSettings} from './utils/launcherSettings';
|
||||
export {loadProcessConfig} from './utils/processConfig';
|
||||
export {getEnvironmentInfo} from './utils/environmentInfo';
|
||||
export {findInstallation} from './utils/findInstallation';
|
||||
export {getGatekeepers} from './gk';
|
||||
export {setupPrefetcher} from './fb-stubs/Prefetcher';
|
||||
export * from './server/attachSocketServer';
|
||||
|
||||
77
desktop/flipper-server-core/src/utils/findInstallation.tsx
Normal file
77
desktop/flipper-server-core/src/utils/findInstallation.tsx
Normal file
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
import path from 'path';
|
||||
import fs from 'fs-extra';
|
||||
import os from 'os';
|
||||
import GK from '../fb-stubs/GK';
|
||||
|
||||
const pwaRoot = path.join(
|
||||
os.homedir(),
|
||||
'Applications',
|
||||
'Chrome Apps.localized',
|
||||
);
|
||||
const appFolder = path.resolve(pwaRoot, '.flipper');
|
||||
const defaultAppPath = path.join(pwaRoot, 'Flipper.app');
|
||||
const movedAppPath = path.join(appFolder, 'Flipper.app');
|
||||
|
||||
export async function movePWA(): Promise<void> {
|
||||
if (os.platform() !== 'darwin') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!GK.get('flipper_move_pwa')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Move PWA into its own folder
|
||||
// Later we will make the folder hidden so Spotlight stops indexing it
|
||||
// Sadly, Spotlight can stop indexing only hidden folder, not hidden files
|
||||
// Therefore, we have to create this parent folder in the first place.
|
||||
if (!(await fs.pathExists(appFolder))) {
|
||||
await fs.mkdir(appFolder);
|
||||
}
|
||||
await fs.move(defaultAppPath, movedAppPath);
|
||||
}
|
||||
|
||||
export async function findInstallation(): Promise<string | undefined> {
|
||||
if (os.platform() !== 'darwin') {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
if (GK.get('flipper_move_pwa')) {
|
||||
if (await fs.pathExists(defaultAppPath)) {
|
||||
await movePWA();
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Failed to move PWA', e);
|
||||
} finally {
|
||||
if (GK.get('flipper_move_pwa')) {
|
||||
const movedAppPlistPath = path.join(
|
||||
movedAppPath,
|
||||
'Contents',
|
||||
'Info.plist',
|
||||
);
|
||||
if (await fs.pathExists(movedAppPlistPath)) {
|
||||
return movedAppPath;
|
||||
}
|
||||
// We should get here only if moving PWA failed
|
||||
}
|
||||
const dafaultAppPlistPath = path.join(
|
||||
defaultAppPath,
|
||||
'Contents',
|
||||
'Info.plist',
|
||||
);
|
||||
if (await fs.pathExists(dafaultAppPlistPath)) {
|
||||
return defaultAppPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user