Skip to content

Commit e786c21

Browse files
committed
AI FEATURE FLAG
1 parent 4d97dc2 commit e786c21

File tree

5 files changed

+59
-38
lines changed

5 files changed

+59
-38
lines changed

src/main/redux/store/memory.ts

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { reduxSyncMiddleware } from "readium-desktop/main/redux/middleware/sync"
1515
import { rootReducer } from "readium-desktop/main/redux/reducers";
1616
import { rootSaga } from "readium-desktop/main/redux/sagas";
1717
import { PersistRootState, RootState } from "readium-desktop/main/redux/states";
18-
import { IS_DEV } from "readium-desktop/preprocessor-directives";
18+
import { IS_AI_FEATURE, IS_DEV } from "readium-desktop/preprocessor-directives";
1919
import { tryCatch, tryCatchSync } from "readium-desktop/utils/tryCatch";
2020
import { applyMiddleware, legacy_createStore as createStore, type Store } from "redux";
2121
import createSagaMiddleware, { SagaMiddleware } from "redux-saga";
@@ -30,8 +30,11 @@ import { clone } from "ramda";
3030
import { TBookmarkState } from "readium-desktop/common/redux/states/bookmark";
3131
import { TAnnotationState } from "readium-desktop/common/redux/states/renderer/annotation";
3232

33-
// TODO: DEBUG ONLY AISDK
34-
import "dotenv/config";
33+
34+
if (IS_AI_FEATURE) {
35+
// .env AI API KEY":
36+
require("dotenv/config");
37+
}
3538

3639
// import { composeWithDevTools } from "remote-redux-devtools";
3740
const REDUX_REMOTE_DEVTOOLS_PORT = 7770;
@@ -438,29 +441,33 @@ export async function initStore()
438441
preloadedState.reader.defaultConfig = { ...readerConfigInitialState, ...preloadedState.reader.defaultConfig };
439442
}
440443

441-
if (preloadedState?.aiApiKeys) {
442-
for (const aiKey of preloadedState.aiApiKeys) {
443-
if (aiKey.provider === "openAI" && aiKey.aiKey) {
444-
process.env["OPENAI_API_KEY"] = aiKey.aiKey;
445-
} else if (aiKey.provider === "mistralAI" && aiKey.aiKey) {
446-
process.env["MISTRAL_API_KEY"] = aiKey.aiKey;
447-
} else if (aiKey.provider === "geminiAI" && aiKey.aiKey) {
448-
process.env["GOOGLE_GENERATIVE_AI_API_KEY"] = aiKey.aiKey;
444+
if (IS_AI_FEATURE) {
445+
446+
if (preloadedState?.aiApiKeys) {
447+
for (const aiKey of preloadedState.aiApiKeys) {
448+
if (aiKey.provider === "openAI" && aiKey.aiKey) {
449+
process.env["OPENAI_API_KEY"] = aiKey.aiKey;
450+
} else if (aiKey.provider === "mistralAI" && aiKey.aiKey) {
451+
process.env["MISTRAL_API_KEY"] = aiKey.aiKey;
452+
} else if (aiKey.provider === "geminiAI" && aiKey.aiKey) {
453+
process.env["GOOGLE_GENERATIVE_AI_API_KEY"] = aiKey.aiKey;
454+
}
449455
}
450456
}
451-
}
452-
{
453-
preloadedState.aiApiKeys = [];
454-
if (process.env["OPENAI_API_KEY"]) {
455-
preloadedState.aiApiKeys.push({ provider: "openAI", aiKey: process.env["OPENAI_API_KEY"] });
456-
}
457-
if (process.env["MISTRAL_API_KEY"]) {
458-
preloadedState.aiApiKeys.push({ provider: "mistralAI", aiKey: process.env["MISTRAL_API_KEY"] });
459-
}
460-
if (process.env["GOOGLE_GENERATIVE_AI_API_KEY"]) {
461-
preloadedState.aiApiKeys.push({ provider: "geminiAI", aiKey: process.env["GOOGLE_GENERATIVE_AI_API_KEY"] });
457+
{
458+
preloadedState.aiApiKeys = [];
459+
if (process.env["OPENAI_API_KEY"]) {
460+
preloadedState.aiApiKeys.push({ provider: "openAI", aiKey: process.env["OPENAI_API_KEY"] });
461+
}
462+
if (process.env["MISTRAL_API_KEY"]) {
463+
preloadedState.aiApiKeys.push({ provider: "mistralAI", aiKey: process.env["MISTRAL_API_KEY"] });
464+
}
465+
if (process.env["GOOGLE_GENERATIVE_AI_API_KEY"]) {
466+
preloadedState.aiApiKeys.push({ provider: "geminiAI", aiKey: process.env["GOOGLE_GENERATIVE_AI_API_KEY"] });
467+
}
462468
}
463469
}
470+
464471
if (preloadedState?.creator && !preloadedState.creator.urn) {
465472
preloadedState.creator.urn = `urn:uuid:${preloadedState.creator.id}`;
466473
}

src/main/streamer/streamerNoHttp.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { app, net, protocol, ProtocolRequest, ProtocolResponse, session } from "
1111
import * as fs from "fs";
1212
import * as mime from "mime-types";
1313
import * as path from "path";
14-
import { _PACKAGING, IS_DEV } from "readium-desktop/preprocessor-directives";
14+
import { _PACKAGING, IS_AI_FEATURE, IS_DEV } from "readium-desktop/preprocessor-directives";
1515

1616
import { TaJsonSerialize } from "@r2-lcp-js/serializable";
1717
import { parseDOM, serializeDOM } from "@r2-navigator-js/electron/common/dom";
@@ -311,7 +311,7 @@ const streamProtocolHandler = async (
311311
headers["Access-Control-Allow-Headers"] = "Content-Type, Content-Length, Accept-Ranges, Content-Range, Range, Link, Transfer-Encoding, X-Requested-With, Authorization, Accept, Origin, User-Agent, DNT, Cache-Control, Keep-Alive, If-Modified-Since";
312312
headers["Access-Control-Expose-Headers"] = "Content-Type, Content-Length, Accept-Ranges, Content-Range, Range, Link, Transfer-Encoding, X-Requested-With, Authorization, Accept, Origin, User-Agent, DNT, Cache-Control, Keep-Alive, If-Modified-Since";
313313

314-
if (isAiSdk) {
314+
if (IS_AI_FEATURE && isAiSdk) {
315315

316316
// use specific debug instance
317317
debugAiSdk("AISDK request !!!");

src/renderer/library/components/settings/Settings.tsx

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import { noteExportHtmlMustacheTemplate } from "readium-desktop/common/readium/a
4949
// import { TagGroup, TagList, Tag, Label } from "react-aria-components";
5050
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
5151
import { ApiKeysList } from "./AiKeyManager";
52+
import { IS_AI_FEATURE } from "readium-desktop/preprocessor-directives";
5253

5354
interface ISettingsProps {};
5455

@@ -447,12 +448,16 @@ export const Settings: React.FC<ISettingsProps> = () => {
447448
<SVG ariaHidden svg={KeyReturnIcon} />
448449
<h3>{__("settings.tabs.keyboardShortcuts")}</h3>
449450
</Tabs.Trigger>
450-
<Tabs.Trigger value="tab5">
451-
<SVG ariaHidden svg={AiIcon} />
452-
<h3>{__("settings.tabs.aiKeyManager")}</h3>
453-
</Tabs.Trigger>
451+
{IS_AI_FEATURE
452+
?
453+
<Tabs.Trigger value="tab5">
454+
<SVG ariaHidden svg={AiIcon} />
455+
<h3>{__("settings.tabs.aiKeyManager")}</h3>
456+
</Tabs.Trigger>
457+
: <></>
458+
}
454459
</Tabs.List>
455-
<div className={stylesSettings.settings_content} style={{marginTop: "70px"}}>
460+
<div className={stylesSettings.settings_content} style={{ marginTop: "70px" }}>
456461
<Tabs.Content value="tab1" tabIndex={-1}>
457462
<TabHeader title={__("settings.tabs.general")} />
458463
<div className={stylesSettings.settings_tab}>
@@ -478,13 +483,16 @@ export const Settings: React.FC<ISettingsProps> = () => {
478483
<KeyboardSettings />
479484
</div>
480485
</Tabs.Content>
481-
<Tabs.Content value="tab5" tabIndex={-1}>
482-
<TabHeader title={__("settings.tabs.aiKeyManager")}>
483-
</TabHeader>
484-
<div className={stylesSettings.settings_tab}>
485-
<ApiKeysList />
486-
</div>
487-
</Tabs.Content>
486+
{IS_AI_FEATURE ?
487+
<Tabs.Content value="tab5" tabIndex={-1}>
488+
<TabHeader title={__("settings.tabs.aiKeyManager")}>
489+
</TabHeader>
490+
<div className={stylesSettings.settings_tab}>
491+
<ApiKeysList />
492+
</div>
493+
</Tabs.Content>
494+
: <></>
495+
}
488496
</div>
489497
</Tabs.Root>
490498

src/renderer/reader/components/App.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import * as React from "react";
1818
import { Provider } from "react-redux";
1919
import {
2020
_NODE_MODULE_RELATIVE_URL, _PACKAGING, _RENDERER_READER_BASE_URL,
21+
IS_AI_FEATURE,
2122
} from "readium-desktop/preprocessor-directives";
2223
import ToastManager from "readium-desktop/renderer/common/components/toast/ToastManager";
2324

@@ -32,6 +33,7 @@ import { getTranslator } from "readium-desktop/common/services/translator";
3233
import { getStore } from "../createStore";
3334
import { TranslatorContext } from "readium-desktop/renderer/common/translator.context";
3435
import { ImageClickManager } from "./ImageClickManagerWithAI";
36+
import { ImageClickManagerImgViewerOnly } from "./ImageClickManagerViewerOnly";
3537
// import { ImageClickManagerImgViewerOnly } from "./ImageClickManagerViewerOnly";
3638

3739
export default class App extends React.Component<{}, undefined> {
@@ -239,7 +241,11 @@ url("${rcssPath}/fonts/iAWriterDuospace-Regular.ttf") format("truetype");
239241
<TranslatorContext.Provider value={getTranslator()}>
240242
<Reader />
241243
<ToastManager />
242-
<ImageClickManager />
244+
{
245+
IS_AI_FEATURE
246+
? <ImageClickManager />
247+
: <ImageClickManagerImgViewerOnly />
248+
}
243249
</TranslatorContext.Provider>
244250
</Provider>
245251
);

webpack.config-preprocessor-directives.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const telemetrySecret = process.env.THORIUM_TELEMETRY_SECRET || "";
3939

4040
// const USE_HTTP_STREAMER = false;
4141

42-
const isAIFeatureEnabled = true;
42+
const isAIFeatureEnabled = false;
4343

4444
const data = {
4545
__APP_VERSION__: JSON.stringify(version),

0 commit comments

Comments
 (0)