Skip to content

Commit a0467e7

Browse files
committed
fix: Fix PDF export not working on Android
The request for loading the PDF worker gets canceled since it tries to load it from a `file:` url, so we need to inline the loader as a blob so that it can be loaded correctly.
1 parent ca234cd commit a0467e7

File tree

7 files changed

+29
-6
lines changed

7 files changed

+29
-6
lines changed
13.1 KB
Binary file not shown.

packages/mobile/ios/Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,7 +1545,7 @@ PODS:
15451545
- React-Core
15461546
- RNPrivacySnapshot (1.0.0):
15471547
- React-Core
1548-
- RNShare (9.4.1):
1548+
- RNShare (10.2.1):
15491549
- React-Core
15501550
- RNStoreReview (0.4.1):
15511551
- React-Core
@@ -1873,7 +1873,7 @@ SPEC CHECKSUMS:
18731873
RNKeychain: a65256b6ca6ba6976132cc4124b238a5b13b3d9c
18741874
RNNotifee: f3c01b391dd8e98e67f539f9a35a9cbcd3bae744
18751875
RNPrivacySnapshot: 8eaf571478a353f2e5184f5c803164f22428b023
1876-
RNShare: 32e97adc8d8c97d4a26bcdd3c45516882184f8b6
1876+
RNShare: 0fad69ae2d71de9d1f7b9a43acf876886a6cb99c
18771877
RNStoreReview: 923b1c888c13469925bf0256dc2c046eab557ce5
18781878
SNReactNative: b5e9e529c175c13f3a618e27c76cf3071213d5e1
18791879
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d

packages/web/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@
9999
"webextension-polyfill": "^0.10.0",
100100
"webpack": "*",
101101
"webpack-dev-server": "*",
102-
"webpack-merge": "*"
102+
"webpack-merge": "*",
103+
"worker-loader": "^3.0.8"
103104
},
104105
"lint-staged": {
105106
"app/**/*.{js,ts,jsx,tsx}": "eslint --cache --fix",

packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFExport.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ import { $isRemoteImageNode } from '../../../Plugins/RemoteImagePlugin/RemoteIma
1919
import { $isCollapsibleContainerNode } from '../../../Plugins/CollapsiblePlugin/CollapsibleContainerNode'
2020
import { $isCollapsibleContentNode } from '../../../Plugins/CollapsiblePlugin/CollapsibleContentNode'
2121
import { $isCollapsibleTitleNode } from '../../../Plugins/CollapsiblePlugin/CollapsibleTitleNode'
22-
import { PDFDataNode, PDFWorker } from './PDFWorker'
22+
// @ts-expect-error TS thinks there's no default export but that is added by the webpack loader.
23+
import PDFWorker, { PDFDataNode, PDFWorkerInterface } from './PDFWorker.worker'
2324
import { wrap } from 'comlink'
2425
import { PrefKey, PrefValue } from '@standardnotes/snjs'
2526

@@ -417,7 +418,8 @@ const getPDFDataNodesFromLexicalNodes = (nodes: LexicalNode[]): PDFDataNode[] =>
417418
return nodes.map(getPDFDataNodeFromLexicalNode)
418419
}
419420

420-
const PDFWorkerComlink = wrap<PDFWorker>(new Worker(new URL('./PDFWorker.tsx', import.meta.url)))
421+
const pdfWorker = new PDFWorker()
422+
const PDFWorkerComlink = wrap<PDFWorkerInterface>(pdfWorker)
421423

422424
/**
423425
* @returns The PDF as an object url

packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFWorker.tsx renamed to packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFWorker.worker.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,6 @@ expose({
102102
renderPDF,
103103
})
104104

105-
export type PDFWorker = {
105+
export type PDFWorkerInterface = {
106106
renderPDF: typeof renderPDF
107107
}

packages/web/web.webpack.config.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,13 @@ module.exports = (env) => {
9292
},
9393
module: {
9494
rules: [
95+
{
96+
test: /\.worker\.tsx?$/,
97+
loader: 'worker-loader',
98+
options: {
99+
inline: 'fallback',
100+
},
101+
},
95102
{
96103
test: /\.(js|tsx?)$/,
97104
/**

yarn.lock

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8414,6 +8414,7 @@ __metadata:
84148414
webpack: "*"
84158415
webpack-dev-server: "*"
84168416
webpack-merge: "*"
8417+
worker-loader: ^3.0.8
84178418
languageName: unknown
84188419
linkType: soft
84198420

@@ -28047,6 +28048,18 @@ __metadata:
2804728048
languageName: node
2804828049
linkType: hard
2804928050

28051+
"worker-loader@npm:^3.0.8":
28052+
version: 3.0.8
28053+
resolution: "worker-loader@npm:3.0.8"
28054+
dependencies:
28055+
loader-utils: ^2.0.0
28056+
schema-utils: ^3.0.0
28057+
peerDependencies:
28058+
webpack: ^4.0.0 || ^5.0.0
28059+
checksum: 84f4a7eeb2a1d8b9704425837e017c91eedfae67ac89e0b866a2dcf283323c1dcabe0258196278b7d5fd0041392da895c8a0c59ddf3a94f1b2e003df68ddfec3
28060+
languageName: node
28061+
linkType: hard
28062+
2805028063
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0":
2805128064
version: 7.0.0
2805228065
resolution: "wrap-ansi@npm:7.0.0"

0 commit comments

Comments
 (0)