saber-notes / saber

The cross-platform open-source app built for handwriting
https://saber.adil.hanney.org
GNU General Public License v3.0
2.06k stars 125 forks source link

iPad PDF/PNG export endless spinning #740

Closed theIuser closed 7 months ago

theIuser commented 1 year ago

Describe the bug

Whenever I try to export a note as pdf or png the iOS share dialog never shows up. It works on iOS but not iPadOS.

To reproduce

  1. create new note and draw something
  2. open share dialog from toolbar and start an export (PDF or PNG)
  3. spinning arrow stops but the iPadOS share dialog never showed up

Expected behavior

iPadOS share dialog to show up and give me an option to share this with external app

Saber version

v0.13.1 (13010)

Device

Anything else?

No response

hankertrix commented 7 months ago

I also face the same issue. However, the spinning arrow icon spins for a while (roughly 5 seconds), and freezes for a moment, like it's trying to open something, then it just continues spinning without opening the iPadOS share dialog.

My note only contains handwriting with no shapes, and is 4 pages long. I can share the exact note file for replication if required.

Below are the relevant details:

Saber version

v0.19.2 App Store (19020)

Device

hankertrix commented 7 months ago

I have found the cause of the issue in line 191 of file_manager.dart.

There is no sharePositionOrigin parameter when calling the shareXFiles function of the Share class. The share_plus library requires the sharePositionOrigin parameter on iPads, as without it, share_plus will not work on iPads and will result in the UI not responding, which is what happens in this case. This requirement also applies to the shareXFiles function of the Share class. This is the reason why the export works perfectly fine in iOS but completely breaks in iPadOS.

Here is the share_plus library documentation talking about the issue (the issue is at the bottom of the page): https://pub.dev/packages/share_plus#known-issues

Here is the share_plus library documentation for the shareXFiles function of the Share class: https://pub.dev/documentation/share_plus/latest/share_plus/Share/shareXFiles.html

RamsaKd commented 7 months ago

I have this same issue on various linux & android devices could it be the same cause?

hankertrix commented 7 months ago

On Android and Linux I doubt that the lack of the sharePositionOrigin parameter is the cause, as the share_plus documentation doesn’t list any known issues for Android, and the Linux export is completely different from the Android and iOS version and doesn’t use the share_plus library.

Either way, this particular issue with iPad export seems to have been addressed in commit 1dd247630ee93dc41ee08e51013577b9be5d8471.

hankertrix commented 7 months ago

After updating the Saber app on the iPad to the latest version, it seems like this issue has been addressed and exporting now works on iPads.

This issue can be closed.

theIuser commented 7 months ago

Just tested the latest 0.20.1 release on my iPad and the bug is fixed.