Skip to content

Commit b74bd88

Browse files
authored
Merge pull request #157 from akaMrNagar/dev
Minor bug fixes
2 parents 66b7f72 + 30c6740 commit b74bd88

File tree

6 files changed

+220
-216
lines changed

6 files changed

+220
-216
lines changed

android/app/src/main/java/com/mindful/android/services/tracking/OverlayManager.kt

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.core.graphics.drawable.toBitmap
2020
import com.mindful.android.R
2121
import com.mindful.android.helpers.device.NotificationHelper
2222
import com.mindful.android.helpers.device.NotificationHelper.USAGE_REMINDERS_CHANNEL_ID
23+
import com.mindful.android.helpers.storage.SharedPrefsHelper
2324
import com.mindful.android.models.RestrictionState
2425
import com.mindful.android.services.accessibility.MindfulAccessibilityService
2526
import com.mindful.android.services.accessibility.MindfulAccessibilityService.Companion.ACTION_PERFORM_HOME_PRESS
@@ -146,13 +147,22 @@ class OverlayManager(
146147
.start()
147148

148149
// Fade-out and remove after delay
149-
Handler(Looper.getMainLooper()).postDelayed({
150-
toastView.animate()
151-
.alpha(0f)
152-
.setDuration(500)
153-
.withEndAction { runCatching { windowManager.removeView(toastView) } }
154-
.start()
155-
}, 5000)
150+
runCatching {
151+
Handler(Looper.getMainLooper()).let {
152+
it.postDelayed({
153+
toastView.animate()
154+
.alpha(0f)
155+
.setDuration(500)
156+
.withEndAction {
157+
it.postDelayed({ windowManager.removeView(toastView) }, 100L)
158+
}
159+
.start()
160+
}, 5000)
161+
}
162+
}.getOrElse { e ->
163+
Log.e(TAG, "showToastOverlay: Failed to show toast overlay", e)
164+
SharedPrefsHelper.insertCrashLogToPrefs(context, e)
165+
}
156166
}
157167
}
158168

android/app/src/main/java/com/mindful/android/services/tracking/ReminderManager.kt

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,24 @@ class ReminderManager(
4747
duration = state.timeLeftMillis,
4848
interval = 60000L,
4949
timeUnit = TimeUnit.MILLISECONDS,
50-
onTick = { elapsedMinutes ->
51-
val elapsed = elapsedMinutes.toInt()
52-
Log.d(TAG, "onTick: Ticked at $elapsed minute.")
50+
onTick = { elapsedMs ->
51+
val elapsedMinutes = (elapsedMs / 60000L).toInt()
52+
Log.d(TAG, "onTick: Ticked after $elapsedMinutes minute.")
5353

5454
when (state.reminderType) {
5555
ReminderType.NONE -> return@PreciseCountDownExecutor
56-
ReminderType.TOAST -> onToastReminder(packageName, elapsed, state)
57-
ReminderType.NOTIFICATION -> onNotificationReminder(packageName, elapsed, state)
58-
ReminderType.MODAL_SHEET -> onFullScreenReminder(packageName, elapsed, state)
56+
ReminderType.TOAST -> onToastReminder(packageName, elapsedMinutes, state)
57+
ReminderType.NOTIFICATION -> onNotificationReminder(
58+
packageName,
59+
elapsedMinutes,
60+
state
61+
)
62+
63+
ReminderType.MODAL_SHEET -> onFullScreenReminder(
64+
packageName,
65+
elapsedMinutes,
66+
state
67+
)
5968
}
6069
},
6170

@@ -100,25 +109,25 @@ class ReminderManager(
100109
elapsedMinutes: Int,
101110
state: RestrictionState,
102111
) {
103-
val screenTimeUsed = (state.screenTimeUsed / 60) + elapsedMinutes
112+
/// Return if not the desired trigger
113+
val totalElapsedMinutes = ((state.screenTimeUsed / 60) + elapsedMinutes).toInt()
114+
if (!reminderTriggers.remove(totalElapsedMinutes)) return
104115

105-
// if used screen time is multiple of [trigger interval]
106-
if (screenTimeUsed % triggerInterval == 0L) {
107-
overlayManager.showToastOverlay(packageName, screenTimeUsed.toInt())
108-
}
116+
Log.d(TAG, "onToastReminder: Showing toast at $totalElapsedMinutes")
117+
overlayManager.showToastOverlay(packageName, totalElapsedMinutes)
109118
}
110119

111120
private fun onNotificationReminder(
112121
packageName: String,
113122
elapsedMinutes: Int,
114123
state: RestrictionState,
115124
) {
116-
val screenTimeUsed = (state.screenTimeUsed / 60) + elapsedMinutes
125+
/// Return if not the desired trigger
126+
val totalElapsedMinutes = ((state.screenTimeUsed / 60) + elapsedMinutes).toInt()
127+
if (!reminderTriggers.remove(totalElapsedMinutes)) return
117128

118-
// if used screen time is multiple of [trigger interval]
119-
if (screenTimeUsed % triggerInterval == 0L) {
120-
overlayManager.showNotification(packageName, screenTimeUsed.toInt())
121-
}
129+
Log.d(TAG, "onNotificationReminder: Showing notification at $totalElapsedMinutes")
130+
overlayManager.showNotification(packageName, totalElapsedMinutes)
122131
}
123132

124133
private fun populateReminderTriggers(state: RestrictionState) {
@@ -134,7 +143,7 @@ class ReminderManager(
134143

135144
ReminderType.TOAST,
136145
ReminderType.NOTIFICATION,
137-
-> {
146+
-> {
138147
// Add all multiples of [trigger interval] minutes after current usage
139148
val usedMinutes = state.screenTimeUsed / 60
140149
val limitMinutes = state.screenTimeLimit / 60
Lines changed: 90 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,90 +1,108 @@
11
package com.mindful.android.utils
2-
32
object NsfwKeywords {
4-
val keywords = setOf(
5-
// General adult content
6-
"porn",
7-
"porno",
8-
"pornography",
9-
"adult",
10-
"sex",
11-
"xxx",
3+
val keywords = hashSetOf<String>(
124
"18+",
13-
"nsfw",
14-
"explicit",
15-
"uncensored",
16-
"hardcore",
17-
"softcore",
5+
"adult",
6+
"affair",
187
"amateur",
19-
"leaked",
20-
21-
// Sexual content terms
22-
"sex",
23-
"sexual",
24-
"intercourse",
25-
"erotic",
26-
"orgasm",
27-
"masturbation",
28-
"fetish",
29-
"kink",
30-
"bdsm",
31-
"dominatrix",
32-
"submission",
33-
"roleplay",
348
"anal",
35-
"oral sex",
9+
"anus",
10+
"arousal",
11+
"ass",
12+
"balls",
13+
"bdsm",
3614
"blowjob",
37-
"handjob",
38-
"cumshot",
39-
"facial",
40-
"deepthroat",
41-
"creampie",
42-
"69",
43-
"threesome",
44-
"foursome",
45-
46-
// Body parts and slang
47-
"nude",
48-
"nudes",
49-
"naked",
15+
"bondage",
5016
"boobs",
51-
"tits",
5217
"breasts",
53-
"nipples",
54-
"pussy",
55-
"vagina",
56-
"dick",
18+
"buceta",
19+
"camgirl",
20+
"camsex",
5721
"cock",
58-
"penis",
59-
"balls",
60-
"testicles",
61-
"butt",
62-
"ass",
63-
"anus",
64-
"milf",
65-
"teen",
22+
"creampie",
23+
"cumshot",
24+
"deepthroat",
25+
"desire",
26+
"dick",
27+
"dominatrix",
6628
"ebony",
29+
"erotic",
30+
"escort",
31+
"explicit",
32+
"facial",
33+
"fetish",
34+
"foursome",
35+
"gay",
36+
"gozar",
37+
"gozei",
38+
"gozo",
39+
"handjob",
40+
"hardcore",
41+
"hentai",
42+
"hookup",
43+
"incest",
44+
"infidelity",
45+
"intercourse",
46+
"kink",
6747
"latina",
48+
"leaked",
6849
"lesbian",
69-
70-
// Adult platforms
50+
"lingerie",
51+
"lust",
52+
"lustful",
53+
"masturbate",
54+
"masturbation",
55+
"milf",
56+
"naked",
57+
"naughty",
58+
"nude",
59+
"nudes",
60+
"nudity",
7161
"onlyfans",
72-
"xvideos",
73-
"xxx",
74-
"xhamster",
62+
"oral sex",
63+
"orgasm",
64+
"orgy",
65+
"pelada",
66+
"peeping",
67+
"penis",
68+
"playmate",
69+
"porn",
7570
"pornhub",
71+
"pornography",
72+
"porno",
73+
"provocateur",
74+
"provocative",
75+
"prostitute",
76+
"pussy",
7677
"redtube",
77-
"youporn",
78-
"xnxx",
79-
80-
// Related euphemisms or queries
81-
"camgirl",
82-
"camsex",
83-
"hookup",
84-
"escort",
85-
"naughty",
86-
"striptease",
78+
"roleplay",
79+
"scandal",
80+
"seduction",
81+
"sex",
82+
"sexual",
83+
"siririca",
84+
"softcore",
8785
"strip",
86+
"striptease",
87+
"stripper",
88+
"submission",
89+
"sultry",
90+
"swingers",
91+
"taboo",
92+
"teen",
93+
"teens",
94+
"temptation",
95+
"testicles",
96+
"threesome",
97+
"tits",
98+
"uncensored",
99+
"vagina",
100+
"voyeur",
88101
"webcam",
102+
"xhamster",
103+
"xvideos",
104+
"xnxx",
105+
"xxx",
106+
"youporn"
89107
)
90-
}
108+
}

lib/ui/common/scaffold_shell.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,8 @@ class _ScaffoldShellState extends State<ScaffoldShell>
124124
final currentOffset = notification.metrics.pixels;
125125

126126
/// Show/Hide bottom bar
127-
if (currentOffset >= _wholeScreenScrollOffSet + 1) {
127+
if (currentOffset >= widget.appBarExpandedHeight &&
128+
(currentOffset >= _wholeScreenScrollOffSet + 1)) {
128129
_isBottomNavVisible.value = false;
129130
} else if (currentOffset <= _wholeScreenScrollOffSet - 1) {
130131
_isBottomNavVisible.value = true;

lib/ui/screens/app_dashboard/app_dashboard_restrictions.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ class AppDashboardRestrictions extends ConsumerWidget {
124124
"None": ReminderType.none,
125125
"Toast": ReminderType.toast,
126126
"Notification": ReminderType.notification,
127-
"Modal Sheet": ReminderType.modalSheet,
127+
"Overlay": ReminderType.modalSheet,
128128
}
129129
.entries
130130
.map((e) => DefaultDropdownItem(label: e.key, value: e.value))

0 commit comments

Comments
 (0)