Skip to content

fix(activity): persist source-type + save-to flags across process death#255

Open
NadeemIqbal wants to merge 1 commit into
afreakyelf:masterfrom
NadeemIqbal:fix/issue-219-uri-restore
Open

fix(activity): persist source-type + save-to flags across process death#255
NadeemIqbal wants to merge 1 commit into
afreakyelf:masterfrom
NadeemIqbal:fix/issue-219-uri-restore

Conversation

@NadeemIqbal

Copy link
Copy Markdown

PdfViewerActivity routes between URL-download and local-file rendering based on isPDFFromPath, a var in the companion object. The same pattern gates SAVE_TO_DOWNLOADS for the download menu. Both are set as side effects of launchPdfFromUrl / launchPdfFromPath and were never written to the intent, so when Android killed the process and restored the activity, the statics reset to their declared defaults (false / true) while the intent's FILE_URL extra still held the original path.

Result: a local file path (set via launchPdfFromPath) was treated as a URL on restore and rejected by PdfDownloader with "Invalid URL Scheme: . Expected HTTP or HTTPS." SAVE_TO_DOWNLOADS had the same bug silently — the download destination flipped after restore.

Fix:

  • Persist both flags as new intent extras (IS_FROM_PATH, SAVE_TO_DOWNLOADS_KEY) in launchPdfFromUrl / launchPdfFromPath
  • Re-derive both statics from the intent in extractIntentExtras() so state restoration restores correct routing
  • Existing static writes kept for back-compat with any caller that reads the companion fields directly

No public API change. Callers that don't go through the launchPdfFromX helpers (custom Intent) fall back to the static's current value, so behaviour is unchanged for them.

Closes #219.

PdfViewerActivity routes between URL-download and local-file rendering
based on isPDFFromPath, a var in the companion object. The same pattern
gates SAVE_TO_DOWNLOADS for the download menu. Both are set as side
effects of launchPdfFromUrl / launchPdfFromPath and were never written
to the intent, so when Android killed the process and restored the
activity, the statics reset to their declared defaults (false / true)
while the intent's FILE_URL extra still held the original path.

Result: a local file path (set via launchPdfFromPath) was treated as a
URL on restore and rejected by PdfDownloader with "Invalid URL Scheme:
<path>. Expected HTTP or HTTPS." SAVE_TO_DOWNLOADS had the same bug
silently — the download destination flipped after restore.

Fix:
- Persist both flags as new intent extras (IS_FROM_PATH,
  SAVE_TO_DOWNLOADS_KEY) in launchPdfFromUrl / launchPdfFromPath
- Re-derive both statics from the intent in extractIntentExtras() so
  state restoration restores correct routing
- Existing static writes kept for back-compat with any caller that
  reads the companion fields directly

No public API change. Callers that don't go through the launchPdfFromX
helpers (custom Intent) fall back to the static's current value, so
behaviour is unchanged for them.

Closes afreakyelf#219.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for contributing to this project. This is your first pull request and we are so glad to have you onboard. We will review the request and get back to you soon. We love your contributions! Join our Discord community here to discuss this PR or ask questions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Error Loading PDF when activity is restored after being killed

1 participant