Summary
Display a friendly, non-intrusive dialog asking users to rate the app on Google Play – without using the Google Play In-App Review API.
The dialog should appear only after a certain amount of meaningful usage, and never directly after installing the update.
It must be shown only at appropriate, non-disruptive moments.
All logic and data persistence is to be centralized via Leafpad.java using SharedPreferences.
Why?
Encouraging positive ratings helps the app’s visibility and growth.
However, aggressive or poorly timed prompts cause frustration.
This feature is meant to be respectful, optional, and user-friendly.
✅ Suggested Trigger Conditions
The prompt should appear only if at least one of these criteria is met:
The user has created 5 or more notes, or
The total character count across all notes is 500 or more, or
The app has been opened 10 times or more
🧠 These thresholds are suggestions – developers are welcome to bring in additional ideas to refine the logic.
❗ Important: Do Not Prompt Immediately After Update
Even if a user has already fulfilled all rules, do not prompt immediately after updating the app.
Instead:
Add a delay (e.g. 5 more launches or 7 days)
Or track a rating_prompt_first_possible timestamp
Developer may choose if this delay is needed and how to implement it
🚫 Never Interrupt Note Editing
⚠️ The rating prompt must never appear while the user is editing a note.
This includes:
Being inside the NoteEditActivity
Editing title or body text
Viewing an unsaved draft
Users must not be interrupted while writing.
Only show the prompt on the home screen, in a passive moment.
🧭 Dialog Behavior
The dialog (preferably a BottomSheetDialog) should offer:
Yes → open the Play Store via SettingsFragment.launchAppStore(...)
No → never ask again
Later → postpone next prompt
⏰ Postponement Logic
After first "Later" → wait 2 months
After second "Later" → wait 4 more months
After that → never show again
🔐 Centralized SharedPreferences via Leafpad.java
Suggested keys:
rating_prompt_answered = "yes" | "no" | "later"
rating_prompt_later_date = long timestamp
rating_prompt_first_possible = long timestamp (optional)
launch_count = int
note_count = int
total_note_chars = int
All read/write logic should go through static helper methods in Leafpad.java.
🧠 Additional Developer Ideas (optional)
Detect idle time before prompting
Tie the prompt to actions like exporting or sharing a note
Allow test triggering via Developer Options
Remember if the prompt was already shown during the session
🧱 Architecture
Must follow the MVVM pattern
Strings must be externalized and translatable (start with English)
Use only Material 3 components and named colors
The UI should be lightweight, friendly, and skippable
Hey 👋 just a quick note:
If you're working on this or planning a PR, check out our Contributing Guidelines first. Thanks so much! 💚
Summary
Display a friendly, non-intrusive dialog asking users to rate the app on Google Play – without using the Google Play In-App Review API.
The dialog should appear only after a certain amount of meaningful usage, and never directly after installing the update.
It must be shown only at appropriate, non-disruptive moments.
All logic and data persistence is to be centralized via Leafpad.java using SharedPreferences.
Why?
Encouraging positive ratings helps the app’s visibility and growth.
However, aggressive or poorly timed prompts cause frustration.
This feature is meant to be respectful, optional, and user-friendly.
✅ Suggested Trigger Conditions
The prompt should appear only if at least one of these criteria is met:
The user has created 5 or more notes, or
The total character count across all notes is 500 or more, or
The app has been opened 10 times or more
🧠 These thresholds are suggestions – developers are welcome to bring in additional ideas to refine the logic.
❗ Important: Do Not Prompt Immediately After Update
Even if a user has already fulfilled all rules, do not prompt immediately after updating the app.
Instead:
Add a delay (e.g. 5 more launches or 7 days)
Or track a rating_prompt_first_possible timestamp
Developer may choose if this delay is needed and how to implement it
🚫 Never Interrupt Note Editing
This includes:
Being inside the NoteEditActivity
Editing title or body text
Viewing an unsaved draft
🧭 Dialog Behavior
The dialog (preferably a BottomSheetDialog) should offer:
Yes → open the Play Store via SettingsFragment.launchAppStore(...)
No → never ask again
Later → postpone next prompt
⏰ Postponement Logic
After first "Later" → wait 2 months
After second "Later" → wait 4 more months
After that → never show again
🔐 Centralized SharedPreferences via Leafpad.java
Suggested keys:
rating_prompt_answered = "yes" | "no" | "later"
rating_prompt_later_date = long timestamp
rating_prompt_first_possible = long timestamp (optional)
launch_count = int
note_count = int
total_note_chars = int
All read/write logic should go through static helper methods in Leafpad.java.
🧠 Additional Developer Ideas (optional)
Detect idle time before prompting
Tie the prompt to actions like exporting or sharing a note
Allow test triggering via Developer Options
Remember if the prompt was already shown during the session
🧱 Architecture
Must follow the MVVM pattern
Strings must be externalized and translatable (start with English)
Use only Material 3 components and named colors
The UI should be lightweight, friendly, and skippable
Hey 👋 just a quick note:
If you're working on this or planning a PR, check out our Contributing Guidelines first. Thanks so much! 💚