copy file to vesktop folder instead of storing full path
This commit is contained in:
parent
3822fb1ed3
commit
466488c7da
5 changed files with 26 additions and 19 deletions
|
@ -44,6 +44,7 @@ export const VENCORD_SETTINGS_DIR = join(DATA_DIR, "settings");
|
||||||
export const VENCORD_QUICKCSS_FILE = join(VENCORD_SETTINGS_DIR, "quickCss.css");
|
export const VENCORD_QUICKCSS_FILE = join(VENCORD_SETTINGS_DIR, "quickCss.css");
|
||||||
export const VENCORD_SETTINGS_FILE = join(VENCORD_SETTINGS_DIR, "settings.json");
|
export const VENCORD_SETTINGS_FILE = join(VENCORD_SETTINGS_DIR, "settings.json");
|
||||||
export const VENCORD_THEMES_DIR = join(DATA_DIR, "themes");
|
export const VENCORD_THEMES_DIR = join(DATA_DIR, "themes");
|
||||||
|
export const VESKTOP_SPLASH_DIR = join(DATA_DIR, "splash");
|
||||||
|
|
||||||
// needs to be inline require because of circular dependency
|
// needs to be inline require because of circular dependency
|
||||||
// as otherwise "DATA_DIR" (which is used by ./settings) will be uninitialised
|
// as otherwise "DATA_DIR" (which is used by ./settings) will be uninitialised
|
||||||
|
|
|
@ -6,10 +6,11 @@
|
||||||
|
|
||||||
import "./ipc";
|
import "./ipc";
|
||||||
|
|
||||||
|
import { join } from "path";
|
||||||
import { app, BrowserWindow, nativeTheme, net, protocol, session } from "electron";
|
import { app, BrowserWindow, nativeTheme, net, protocol, session } from "electron";
|
||||||
import { autoUpdater } from "electron-updater";
|
import { autoUpdater } from "electron-updater";
|
||||||
|
|
||||||
import { DATA_DIR } from "./constants";
|
import { DATA_DIR, VESKTOP_SPLASH_DIR } from "./constants";
|
||||||
import { createFirstLaunchTour } from "./firstLaunch";
|
import { createFirstLaunchTour } from "./firstLaunch";
|
||||||
import { createWindows, mainWin } from "./mainWindow";
|
import { createWindows, mainWin } from "./mainWindow";
|
||||||
import { registerMediaPermissionsHandler } from "./mediaPermissions";
|
import { registerMediaPermissionsHandler } from "./mediaPermissions";
|
||||||
|
@ -84,7 +85,8 @@ function init() {
|
||||||
//register file handler so we can load the custom splash animation from the user's filesystem
|
//register file handler so we can load the custom splash animation from the user's filesystem
|
||||||
protocol.handle("splash-animation", () => {
|
protocol.handle("splash-animation", () => {
|
||||||
const { splashAnimationPath } = Settings.store;
|
const { splashAnimationPath } = Settings.store;
|
||||||
return net.fetch("file:///"+splashAnimationPath);
|
const fullPath = join(VESKTOP_SPLASH_DIR, splashAnimationPath as string);
|
||||||
|
return net.fetch("file:///"+fullPath);
|
||||||
});
|
});
|
||||||
|
|
||||||
//this patches the discord csp to allow the splash-animation:// protocol
|
//this patches the discord csp to allow the splash-animation:// protocol
|
||||||
|
|
|
@ -9,15 +9,16 @@ if (process.platform === "linux") import("./venmic");
|
||||||
import { execFile } from "child_process";
|
import { execFile } from "child_process";
|
||||||
import { app, BrowserWindow, clipboard, dialog, nativeImage, RelaunchOptions, session, shell } from "electron";
|
import { app, BrowserWindow, clipboard, dialog, nativeImage, RelaunchOptions, session, shell } from "electron";
|
||||||
import { mkdirSync, readFileSync, watch } from "fs";
|
import { mkdirSync, readFileSync, watch } from "fs";
|
||||||
import { open, readFile } from "fs/promises";
|
import { open, readFile, copyFile, mkdir, rmdir } from "fs/promises";
|
||||||
import { release } from "os";
|
import { release } from "os";
|
||||||
import { join } from "path";
|
import { randomBytes } from "crypto";
|
||||||
|
import { join, extname } from "path";
|
||||||
import { debounce } from "shared/utils/debounce";
|
import { debounce } from "shared/utils/debounce";
|
||||||
|
|
||||||
import { IpcEvents } from "../shared/IpcEvents";
|
import { IpcEvents } from "../shared/IpcEvents";
|
||||||
import { setBadgeCount } from "./appBadge";
|
import { setBadgeCount } from "./appBadge";
|
||||||
import { autoStart } from "./autoStart";
|
import { autoStart } from "./autoStart";
|
||||||
import { VENCORD_FILES_DIR, VENCORD_QUICKCSS_FILE, VENCORD_THEMES_DIR } from "./constants";
|
import { VENCORD_FILES_DIR, VENCORD_QUICKCSS_FILE, VENCORD_THEMES_DIR, VESKTOP_SPLASH_DIR } from "./constants";
|
||||||
import { mainWin } from "./mainWindow";
|
import { mainWin } from "./mainWindow";
|
||||||
import { Settings, State } from "./settings";
|
import { Settings, State } from "./settings";
|
||||||
import { handle, handleSync } from "./utils/ipcWrappers";
|
import { handle, handleSync } from "./utils/ipcWrappers";
|
||||||
|
@ -134,7 +135,17 @@ handle(IpcEvents.SELECT_IMAGE_PATH, async () => {
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
if (!res.filePaths.length) return "cancelled";
|
if (!res.filePaths.length) return "cancelled";
|
||||||
return res.filePaths[0];
|
|
||||||
|
const originalPath = res.filePaths[0];
|
||||||
|
const uuid = randomBytes(16).toString("hex");
|
||||||
|
const imageName = "splash_" + uuid + extname(originalPath);
|
||||||
|
const destPath = join(VESKTOP_SPLASH_DIR, imageName);
|
||||||
|
|
||||||
|
await rmdir(VESKTOP_SPLASH_DIR, {recursive: true})
|
||||||
|
await mkdir(VESKTOP_SPLASH_DIR, {recursive: true});
|
||||||
|
await copyFile(originalPath, destPath);
|
||||||
|
|
||||||
|
return imageName;
|
||||||
});
|
});
|
||||||
|
|
||||||
handle(IpcEvents.SET_BADGE_COUNT, (_, count: number) => setBadgeCount(count));
|
handle(IpcEvents.SET_BADGE_COUNT, (_, count: number) => setBadgeCount(count));
|
||||||
|
|
|
@ -35,7 +35,7 @@ export const VesktopNative = {
|
||||||
showItemInFolder: (path: string) => invoke<void>(IpcEvents.SHOW_ITEM_IN_FOLDER, path),
|
showItemInFolder: (path: string) => invoke<void>(IpcEvents.SHOW_ITEM_IN_FOLDER, path),
|
||||||
getVencordDir: () => sendSync<string | undefined>(IpcEvents.GET_VENCORD_DIR),
|
getVencordDir: () => sendSync<string | undefined>(IpcEvents.GET_VENCORD_DIR),
|
||||||
selectVencordDir: (value?: null) => invoke<"cancelled" | "invalid" | "ok">(IpcEvents.SELECT_VENCORD_DIR, value),
|
selectVencordDir: (value?: null) => invoke<"cancelled" | "invalid" | "ok">(IpcEvents.SELECT_VENCORD_DIR, value),
|
||||||
selectImagePath: () => invoke<LiteralUnion<"cancelled", string>>(IpcEvents.SELECT_IMAGE_PATH)
|
selectImagePath: () => invoke<"cancelled" | string>(IpcEvents.SELECT_IMAGE_PATH)
|
||||||
},
|
},
|
||||||
settings: {
|
settings: {
|
||||||
get: () => sendSync<Settings>(IpcEvents.GET_SETTINGS),
|
get: () => sendSync<Settings>(IpcEvents.GET_SETTINGS),
|
||||||
|
|
|
@ -21,17 +21,7 @@ export const CustomSplashAnimation: SettingsComponent = ({ settings }) => {
|
||||||
}}>
|
}}>
|
||||||
{/* adding the Math.random() here ensures that a new image is fetched when the user changes the path */}
|
{/* adding the Math.random() here ensures that a new image is fetched when the user changes the path */}
|
||||||
<img src={"splash-animation:///" + Math.random()} width="64px" height="64px"></img>
|
<img src={"splash-animation:///" + Math.random()} width="64px" height="64px"></img>
|
||||||
<p>The custom splash animation is enabled. It is loaded from
|
<p>The custom splash animation is enabled.</p>
|
||||||
<a
|
|
||||||
href="about:blank"
|
|
||||||
onClick={e => {
|
|
||||||
e.preventDefault();
|
|
||||||
VesktopNative.fileManager.showItemInFolder(settings.splashAnimationPath!);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{" " + settings.splashAnimationPath}
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
"A custom splash animation is not set."
|
"A custom splash animation is not set."
|
||||||
|
@ -51,7 +41,10 @@ export const CustomSplashAnimation: SettingsComponent = ({ settings }) => {
|
||||||
<Button
|
<Button
|
||||||
size={Button.Sizes.SMALL}
|
size={Button.Sizes.SMALL}
|
||||||
color={Button.Colors.RED}
|
color={Button.Colors.RED}
|
||||||
onClick={() => (settings.splashAnimationPath = void 0)}
|
onClick={() => {
|
||||||
|
//todo: delete the image after resetting the path?
|
||||||
|
settings.splashAnimationPath = undefined
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
Reset
|
Reset
|
||||||
</Button>
|
</Button>
|
||||||
|
|
Loading…
Reference in a new issue