Skip to content

Commit

Permalink
fix filesystem wrapper protocol for windows
Browse files Browse the repository at this point in the history
  • Loading branch information
xgi committed Nov 5, 2024
1 parent 021d1a4 commit 4fd860b
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 9 deletions.
13 changes: 11 additions & 2 deletions src/main/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@ if (process.env.NODE_ENV === 'development' || process.env.DEBUG_PROD === 'true')
require('electron-debug')();
}

protocol.registerSchemesAsPrivileged([
{
scheme: 'atom',
privileges: {
supportFetchAPI: true,
},
},
]);

const createWindows = async () => {
const RESOURCES_PATH = app.isPackaged
? path.join(process.resourcesPath, 'resources')
Expand Down Expand Up @@ -126,8 +135,8 @@ app
loadPlugins(spoofWindow!);

protocol.handle('atom', (req) => {
const { pathname } = new URL(req.url);
return net.fetch(`file://${pathname}`, {
const newPath = decodeURIComponent(req.url.slice('atom://'.length));
return net.fetch(`file://${newPath}`, {
method: req.method,
headers: req.headers,
body: req.body,
Expand Down
4 changes: 3 additions & 1 deletion src/renderer/components/general/SeriesEditControls.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ type Props = {
const SeriesEditControls: React.FC<Props> = (props: Props) => {
const getCoverSrcUrl = () => {
if (props.series.extensionId === FS_METADATA.id) {
return props.series.remoteCoverUrl ? `atom://${props.series.remoteCoverUrl}` : blankCover;
return props.series.remoteCoverUrl
? `atom://${encodeURIComponent(props.series.remoteCoverUrl)}`
: blankCover;
}
return props.series.remoteCoverUrl;
};
Expand Down
6 changes: 4 additions & 2 deletions src/renderer/components/library/LibraryGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,13 @@ const LibraryGrid: React.FC<Props> = (props: Props) => {
const fileExtensions = constants.IMAGE_EXTENSIONS;
for (let i = 0; i < fileExtensions.length; i += 1) {
const thumbnailPath = path.join(thumbnailsDir, `${series.id}.${fileExtensions[i]}`);
if (fs.existsSync(thumbnailPath)) return `atom://${thumbnailPath}`;
if (fs.existsSync(thumbnailPath)) return `atom://${encodeURIComponent(thumbnailPath)}`;
}

if (series.extensionId === FS_METADATA.id) {
return series.remoteCoverUrl ? `atom://${series.remoteCoverUrl}` : blankCover;
return series.remoteCoverUrl
? `atom://${encodeURIComponent(series.remoteCoverUrl)}`
: blankCover;
}
return series.remoteCoverUrl || blankCover;
};
Expand Down
6 changes: 4 additions & 2 deletions src/renderer/components/library/series/SeriesDetailsIntro.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,13 @@ const SeriesDetailsIntro: React.FC<Props> = (props: Props) => {
const fileExtensions = constants.IMAGE_EXTENSIONS;
for (let i = 0; i < fileExtensions.length; i += 1) {
const thumbnailPath = path.join(thumbnailsDir, `${props.series.id}.${fileExtensions[i]}`);
if (fs.existsSync(thumbnailPath)) return `atom://${thumbnailPath}`;
if (fs.existsSync(thumbnailPath)) return `atom://${encodeURIComponent(thumbnailPath)}`;
}

if (props.series.extensionId === FS_METADATA.id) {
return props.series.remoteCoverUrl ? `atom://${props.series.remoteCoverUrl}` : blankCover;
return props.series.remoteCoverUrl
? `atom://${encodeURIComponent(props.series.remoteCoverUrl)}`
: blankCover;
}
return props.series.remoteCoverUrl || blankCover;
};
Expand Down
4 changes: 2 additions & 2 deletions src/renderer/components/reader/ReaderPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ const ReaderPage: React.FC = () => {
.then((pageRequesterData: PageRequesterData) =>
ipcRenderer.invoke(ipcChannels.EXTENSION.GET_PAGE_URLS, FS_METADATA.id, pageRequesterData),
);
newPageUrls = newPageUrls.map((pageUrl) => `atom://${pageUrl}`);
newPageUrls = newPageUrls.map((pageUrl) => `atom://${encodeURIComponent(pageUrl)}`);

setPageUrls(newPageUrls);
setLastPageNumber(newPageUrls.length);
Expand Down Expand Up @@ -255,7 +255,7 @@ const ReaderPage: React.FC = () => {
);

if (series.extensionId === FS_METADATA.id) {
newPageUrls = newPageUrls.map((pageUrl) => `atom://${pageUrl}`);
newPageUrls = newPageUrls.map((pageUrl) => `atom://${encodeURIComponent(pageUrl)}`);
}

setPageUrls(newPageUrls);
Expand Down

0 comments on commit 4fd860b

Please sign in to comment.