Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(share_plus): SharePlus refactor #3404

Open
wants to merge 20 commits into
base: main
Choose a base branch
from

Conversation

miquelbeltran
Copy link
Member

@miquelbeltran miquelbeltran commented Dec 18, 2024

Description

This PR contains several improvements on the share_plus package:

  • Unified the 3 static methods into a single non-static method.
  • Access to SharePlus class via instance singleton, rather than using static methods.
  • Allow to mock SharePlatform for testing.
  • Consolidated the use of subject and title.
  • Wrapped all share parameters into the ShareParams class.
  • Unified native share implementations into a single method (when possible).
  • Added mailToFallbackEnabled to disable web mailTo failback (enabled by default)
  • downloadFallbackEnabled is no longer a static setting but part of the ShareParams
  • Sharing uri is now supported on all platforms by sharing the URI as plain text

Not a breaking change, since the old API is still compatible, only it has been deprecated.
But we should consider bumping the version of share_plus to a major release nevertheless, since the deprecation will break CI/CD lint analysis.

TODO:

  • Implement Linux
  • Implement macOS
  • Implement Android
  • Implement iOS
  • Implement Windows Native
  • Implement Windows Fallback
  • Implement Web
  • Implement new tests
  • Document public method

Related Issues

Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I titled the PR using Conventional Commits.
  • I did not modify the CHANGELOG.md nor the plugin version in pubspec.yaml files.
  • All existing and new tests are passing.
  • The analyzer (flutter analyze) does not report any problems on my PR.

Breaking Change

Does your PR require plugin users to manually update their apps to accommodate your change?

  • Yes, this is a breaking change (please indicate that with a ! in the title as explained in Conventional Commits).
  • No, this is not a breaking change.

@miquelbeltran
Copy link
Member Author

One last big piece missing is the Windows refactor, which I plan to do tomorrow or so.

Then I'll write up a migration guide on the README.md.

The API and functionality is still backwards compatible, but just getting deprecated warnings. The old Share class will be removed eventually.

The subject and title functionality has been consolidated:

  • title is used everywhere where the value is used in the share sheet as title.
  • subject is used for email subjects
    • on iOS and macOS, to keep compatibility and avoid having a breaking change, it will use the subject if title is not provided, for the share sheet title.

@miquelbeltran miquelbeltran marked this pull request as ready for review December 20, 2024 09:45
@miquelbeltran miquelbeltran changed the title feat(share_plus): SharePlus refactor (WIP) feat(share_plus): SharePlus refactor Dec 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant