Rebrand from MyCrib to Casera

- Rename Kotlin package from com.example.mycrib to com.example.casera
- Update Android app name, namespace, and application ID
- Update iOS bundle identifiers and project settings
- Rename iOS directories (MyCribTests -> CaseraTests, etc.)
- Update deep link schemes from mycrib:// to casera://
- Update app group identifiers
- Update subscription product IDs
- Update all UI strings and branding

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Trey t
2025-11-28 21:10:38 -06:00
parent 8dbc816a33
commit c6eef720ed
215 changed files with 767 additions and 767 deletions

View File

@@ -0,0 +1,39 @@
package com.casera.storage
import java.io.File
import java.util.prefs.Preferences
/**
* JVM implementation of TaskCacheManager using Java Preferences.
*/
actual class TaskCacheManager {
private val prefs = Preferences.userRoot().node(NODE_NAME)
actual fun saveTasks(tasksJson: String) {
prefs.put(KEY_TASKS, tasksJson)
prefs.flush()
}
actual fun getTasks(): String? {
return prefs.get(KEY_TASKS, null)
}
actual fun clearTasks() {
prefs.remove(KEY_TASKS)
prefs.flush()
}
companion object {
private const val NODE_NAME = "com.casera.cache"
private const val KEY_TASKS = "cached_tasks"
@Volatile
private var instance: TaskCacheManager? = null
fun getInstance(): TaskCacheManager {
return instance ?: synchronized(this) {
instance ?: TaskCacheManager().also { instance = it }
}
}
}
}

View File

@@ -0,0 +1,5 @@
package com.casera.storage
internal actual fun getPlatformTaskCacheManager(): TaskCacheManager? {
return TaskCacheManager.getInstance()
}

View File

@@ -0,0 +1,38 @@
package com.casera.storage
import java.util.prefs.Preferences
/**
* JVM implementation of TokenManager using Java Preferences API.
*/
actual class TokenManager {
private val prefs: Preferences = Preferences.userRoot().node(PREFS_NODE)
actual fun saveToken(token: String) {
prefs.put(KEY_TOKEN, token)
prefs.flush()
}
actual fun getToken(): String? {
return prefs.get(KEY_TOKEN, null)
}
actual fun clearToken() {
prefs.remove(KEY_TOKEN)
prefs.flush()
}
companion object {
private const val PREFS_NODE = "com.casera.app"
private const val KEY_TOKEN = "auth_token"
@Volatile
private var instance: TokenManager? = null
fun getInstance(): TokenManager {
return instance ?: synchronized(this) {
instance ?: TokenManager().also { instance = it }
}
}
}
}

View File

@@ -0,0 +1,5 @@
package com.casera.storage
internal actual fun getPlatformTokenManager(): TokenManager? {
return TokenManager.getInstance()
}