diff --git a/desktop/flipper-frontend-core/src/devices/__tests__/BaseDevice.node.tsx b/desktop/flipper-frontend-core/src/devices/__tests__/BaseDevice.node.tsx index fe1f1a9fd..ccdfedb44 100644 --- a/desktop/flipper-frontend-core/src/devices/__tests__/BaseDevice.node.tsx +++ b/desktop/flipper-frontend-core/src/devices/__tests__/BaseDevice.node.tsx @@ -249,8 +249,17 @@ test('log listeners are resumed and suspended automatically - 1', async () => { }, }); + const baseFlipperLib = baseFlipperLibImplementation( + getRenderHostInstance(), + getLogger(), + ); _setFlipperLibImplementation({ - ...baseFlipperLibImplementation(getRenderHostInstance(), getLogger()), + ...baseFlipperLib, + intern: { + ...baseFlipperLib.intern, + currentUser: jest.fn(), + isConnected: jest.fn(), + }, createPaste: jest.fn(), enableMenuEntries: jest.fn(), selectPlugin: jest.fn(), @@ -328,8 +337,17 @@ test('log listeners are resumed and suspended automatically - 2', async () => { const client = new TestClient(device, [Plugin]); + const baseFlipperLib = baseFlipperLibImplementation( + getRenderHostInstance(), + getLogger(), + ); _setFlipperLibImplementation({ - ...baseFlipperLibImplementation(getRenderHostInstance(), getLogger()), + ...baseFlipperLib, + intern: { + ...baseFlipperLib.intern, + currentUser: jest.fn(), + isConnected: jest.fn(), + }, createPaste: jest.fn(), enableMenuEntries: jest.fn(), selectPlugin: jest.fn(), diff --git a/desktop/flipper-frontend-core/src/flipperLibImplementation/index.tsx b/desktop/flipper-frontend-core/src/flipperLibImplementation/index.tsx index 96f052e2f..0e44d8a80 100644 --- a/desktop/flipper-frontend-core/src/flipperLibImplementation/index.tsx +++ b/desktop/flipper-frontend-core/src/flipperLibImplementation/index.tsx @@ -26,8 +26,12 @@ export function baseFlipperLibImplementation( logger: Logger, ): Omit< FlipperLib, - 'enableMenuEntries' | 'selectPlugin' | 'showNotification' | 'createPaste' -> { + | 'enableMenuEntries' + | 'selectPlugin' + | 'showNotification' + | 'createPaste' + | 'intern' +> & {intern: Omit} { return { isFB: !constants.IS_PUBLIC_BUILD, logger, diff --git a/desktop/flipper-plugin-core/src/plugin/FlipperLib.tsx b/desktop/flipper-plugin-core/src/plugin/FlipperLib.tsx index 2be3ade60..66785462a 100644 --- a/desktop/flipper-plugin-core/src/plugin/FlipperLib.tsx +++ b/desktop/flipper-plugin-core/src/plugin/FlipperLib.tsx @@ -27,8 +27,10 @@ import { FSStatsLike, FlipperServerCommands, ENVIRONMENT_VARIABLES, + User, } from 'flipper-common'; import {CreatePasteArgs, CreatePasteResult} from './Paste'; +import {Atom} from '../state/atom'; export type FileEncoding = 'utf-8' | 'base64'; @@ -213,6 +215,8 @@ interface InternAPI { * @deprecated */ isLoggedIn: FlipperServerCommands['is-logged-in']; + currentUser: () => Atom; + isConnected: () => Atom; } export let flipperLibInstance: FlipperLib | undefined; diff --git a/desktop/flipper-plugin-core/src/test-utils/test-utils.tsx b/desktop/flipper-plugin-core/src/test-utils/test-utils.tsx index 70266e7a2..170c5c2ed 100644 --- a/desktop/flipper-plugin-core/src/test-utils/test-utils.tsx +++ b/desktop/flipper-plugin-core/src/test-utils/test-utils.tsx @@ -18,6 +18,7 @@ import { FlipperPluginModule, SandyPluginDefinition, } from '../plugin/SandyPluginDefinition'; +import {createState} from '../state/atom'; import {stubLogger} from '../utils/Logger'; declare const process: any; @@ -80,6 +81,8 @@ export function createMockFlipperLib(options?: StartPluginOptions): FlipperLib { graphGet: createStubFunction(), graphPost: createStubFunction(), isLoggedIn: createStubFunction(), + currentUser: () => createState(null), + isConnected: () => createState(true), }, remoteServerContext: { childProcess: { diff --git a/desktop/flipper-server-companion/src/initializeFlipperLibImplementation.tsx b/desktop/flipper-server-companion/src/initializeFlipperLibImplementation.tsx index d415fd8e6..9858a7639 100644 --- a/desktop/flipper-server-companion/src/initializeFlipperLibImplementation.tsx +++ b/desktop/flipper-server-companion/src/initializeFlipperLibImplementation.tsx @@ -7,15 +7,27 @@ * @format */ -import {Logger, _setFlipperLibImplementation} from 'flipper-plugin-core'; +import { + createState, + Logger, + _setFlipperLibImplementation, +} from 'flipper-plugin-core'; import {baseFlipperLibImplementation, RenderHost} from 'flipper-frontend-core'; export function initializeFlipperLibImplementation( renderHost: RenderHost, logger: Logger, ) { + const base = baseFlipperLibImplementation(renderHost, logger); _setFlipperLibImplementation({ - ...baseFlipperLibImplementation(renderHost, logger), + ...base, + intern: { + ...base.intern, + // TODO: Implement me + currentUser: () => createState(null), + // TODO: Implement me + isConnected: () => createState(true), + }, enableMenuEntries() {}, createPaste() { // TODO: Implement me diff --git a/desktop/flipper-ui-core/src/utils/flipperLibImplementation/index.tsx b/desktop/flipper-ui-core/src/utils/flipperLibImplementation/index.tsx index f74f3fc92..678a302dc 100644 --- a/desktop/flipper-ui-core/src/utils/flipperLibImplementation/index.tsx +++ b/desktop/flipper-ui-core/src/utils/flipperLibImplementation/index.tsx @@ -17,14 +17,21 @@ import {addNotification} from '../../reducers/notifications'; import {deconstructPluginKey} from 'flipper-common'; import {RenderHost} from 'flipper-frontend-core'; import {setMenuEntries} from '../../reducers/connections'; +import {currentUser, isConnected} from '../../fb-stubs/user'; export function initializeFlipperLibImplementation( renderHost: RenderHost, store: Store, logger: Logger, ) { + const base = baseFlipperLibImplementation(renderHost, logger); _setFlipperLibImplementation({ - ...baseFlipperLibImplementation(renderHost, logger), + ...base, + intern: { + ...base.intern, + currentUser, + isConnected, + }, enableMenuEntries(entries) { store.dispatch(setMenuEntries(entries)); },