-
-
Notifications
You must be signed in to change notification settings - Fork 196
Add freemium model with 30-day trial, Google Play IAP, and write-access gating #630
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
Open
tobihagemann
wants to merge
46
commits into
develop
Choose a base branch
from
feature/freemium
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
46 commits
Select commit
Hold shift + click to select a range
ffa55f5
Merge branch 'develop' into feature/freemium
SailReal f92b090
WIP IAP
SailReal 16c73d0
WIP IAP
SailReal d9c1a85
Fix onboarding: auto-advance license, screen lock step, playstore fre…
tobihagemann 967e880
Fix onboarding fragment crash, text editor license gating, and double…
tobihagemann 954c354
Add three-option IAP purchase screen with trial, subscription, and li…
tobihagemann a38ca96
Fix crash: split queryProductDetails into separate INAPP and SUBS que…
tobihagemann 78b75ed
Show purchase options during active trial
tobihagemann 6bb4942
Fix prices not loading: defer product details query until billing con…
tobihagemann 53c28b8
Fix thread safety in IapBillingService, extract trial state, remove d…
tobihagemann 6c4e4b9
Load product prices when navigating to License page in onboarding
tobihagemann a25c485
Extract shared resolveProductPrices() from LicenseCheckActivity and W…
tobihagemann e66ff2f
Align IAP screen with iOS: labels, inline trial status, logo size, sp…
tobihagemann 98961eb
Use dedicated tight-viewport drawable for IAP logo, match iOS 64dp si…
tobihagemann 830f426
Queue product detail callbacks when billing service not yet bound
tobihagemann 58b97d1
Support concurrent pending callbacks in IapBillingService
tobihagemann 3c60580
Fix vertical centering of price labels in IAP pill buttons
tobihagemann 9ceda13
Align IAP and settings screens with iOS: remove unlocked text, add tr…
tobihagemann 7de9bb7
Remove redundant onboarding license header, add settings preference t…
tobihagemann ae83567
Show trial info text only when expired, add info circle icon
tobihagemann af96962
Hide expired trial info text on Welcome screen after purchase
tobihagemann 118d467
Extract shared LicenseContentViewBinder for purchase and trial state …
tobihagemann fcd5ca7
Extract IAP layout setup, legal links, and product prices into Licens…
tobihagemann 61cc843
Extract license-entry layout setup into LicenseContentViewBinder
tobihagemann 196cc47
Fix billing state corruption, thread safety, and error handling in Ia…
tobihagemann 45e8c75
Harden LicenseEnforcer: trial guard, isIapFlavor, LicenseUiState, rem…
tobihagemann 1c819f5
Fix WelcomePresenter listener bugs, fragment lifecycle, and adopt Lic…
tobihagemann fad4f00
Consolidate IAP logic into LicenseContentViewBinder, wire up lockedAc…
tobihagemann 8c7b3f2
Fix migration welcome flow, add billing refresh on resume, add night …
tobihagemann a15528f
Add Settings subscription management, trial-expired dialog, fix subsc…
tobihagemann 198a5e3
Extract PurchaseManager, fix TOCTOU race, add isReady guard, preload …
tobihagemann f128b0d
Guard rename/move/delete behind write access, fix Hub default and Set…
tobihagemann 998b8fd
Revert Hub subscription default to INACTIVE for Community Edition safety
tobihagemann cb61aee
Consolidate flavor checks, deduplicate license orchestration, defer S…
tobihagemann 386640c
Fix store-before-verify bug, restore LicensesActivity, consolidate Hu…
tobihagemann 79a07e6
Add license security tests, vault write-access tests, deduplicate fla…
tobihagemann c983539
Clean up test FQN imports, deduplicate Gradle exclude blocks
tobihagemann ddf97bb
Merge develop into feature/freemium, resolve conflicts
tobihagemann 0b8605c
Remove write-access gate from onVaultSelected, remove finish() from o…
tobihagemann b6d6867
Address review comments: create intent interfaces, fix auto-advance r…
tobihagemann 2a0ae21
Fix VaultListPresenterFreemiumTest NPE: use mockito-kotlin isA for no…
tobihagemann 0751f3c
Remove unused DoLicenseCheckUseCase from VaultListPresenter
tobihagemann 22d1854
Address remaining review comments: intent builders, braces, welcome f…
tobihagemann 8728e06
Inline trial duration constant at usage site
tobihagemann f2f31ee
Add braces to single-line if block in WelcomeActivity
tobihagemann 897194e
Remove EXTRA_LOCKED_ACTION constant, refresh @InjectIntent reader in …
tobihagemann File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.