Update: 2026-05-16 19:26:42

This commit is contained in:
Hamza-Ayed
2026-05-16 19:26:43 +03:00
parent 7dd35c8fa3
commit cfb397059c
5054 changed files with 222628 additions and 320732 deletions

View File

@@ -57,6 +57,7 @@ class SubscriptionActivity : AppCompatActivity() {
val plan = SubscriptionManager.currentPlan
val limit = SubscriptionManager.ridesLimit
val today = SubscriptionManager.ridesToday
val missed = SubscriptionManager.missedRidesToday
val planText = when(plan) {
"basic" -> "أساسي (3 تطبيقات)"
@@ -64,7 +65,16 @@ class SubscriptionActivity : AppCompatActivity() {
else -> "مجاني (تطبيق واحد)"
}
tvStatus.text = "الخطة الحالية: $planText\nاستهلاك اليوم: $today / $limit"
var statusText = "الخطة الحالية: $planText\nاستهلاك اليوم: $today / $limit"
// FOMO counter: show missed rides to free users
if (missed > 0 && (plan == "free" || plan == "")) {
val estimatedLoss = missed * 2.5 // Average ride ~2.5 JOD
statusText += "\n\n⚠️ طلبات فاتتك اليوم بسبب الحد المجاني: $missed طلب"
statusText += "\n💸 خسارة تقديرية: ~${String.format("%.1f", estimatedLoss)} دينار"
}
tvStatus.text = statusText
}
private fun startPaymentFlow(plan: String, amount: Double) {

View File

@@ -170,6 +170,7 @@ class RideAccessibilityService : AccessibilityService() {
}
} else {
Log.w("JordanBot", "⚠️ Ride matches filters but DAILY LIMIT REACHED. Upgrade required.")
SubscriptionManager.recordMissedRide(this@RideAccessibilityService)
}
}
}

View File

@@ -14,11 +14,14 @@ object SubscriptionManager {
private const val KEY_CAN_ACCEPT = "can_accept"
private const val KEY_RIDES_TODAY = "rides_today"
private const val KEY_RIDES_LIMIT = "rides_limit"
private const val KEY_MISSED_RIDES = "missed_rides_today"
private const val KEY_MISSED_DATE = "missed_date"
var currentPlan: String = "free"
var canAcceptRides: Boolean = true
var ridesToday: Int = 0
var ridesLimit: Int = 1
var missedRidesToday: Int = 0
fun loadLocalCache(context: Context) {
val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
@@ -26,6 +29,31 @@ object SubscriptionManager {
canAcceptRides = prefs.getBoolean(KEY_CAN_ACCEPT, true)
ridesToday = prefs.getInt(KEY_RIDES_TODAY, 0)
ridesLimit = prefs.getInt(KEY_RIDES_LIMIT, 1)
// Reset missed rides counter if it's a new day
val today = java.text.SimpleDateFormat("yyyy-MM-dd", java.util.Locale.US).format(java.util.Date())
val savedDate = prefs.getString(KEY_MISSED_DATE, "") ?: ""
if (savedDate == today) {
missedRidesToday = prefs.getInt(KEY_MISSED_RIDES, 0)
} else {
missedRidesToday = 0
}
}
/**
* Called when a ride matches filters but was blocked due to quota limit.
* This powers the FOMO counter that drives free users to subscribe.
*/
fun recordMissedRide(context: Context) {
missedRidesToday++
val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
val today = java.text.SimpleDateFormat("yyyy-MM-dd", java.util.Locale.US).format(java.util.Date())
prefs.edit().apply {
putInt(KEY_MISSED_RIDES, missedRidesToday)
putString(KEY_MISSED_DATE, today)
apply()
}
Log.w("JordanBot", "⚠️ FOMO: Missed ride #$missedRidesToday today due to quota limit")
}
suspend fun checkSubscription(context: Context): Boolean {
@@ -59,3 +87,4 @@ object SubscriptionManager {
}
}
}