diff --git a/app/schemas/com.jeeldobariya.passcodes.database.MasterDatabase/1.json b/app/schemas/com.jeeldobariya.passcodes.database.MasterDatabase/1.json
deleted file mode 100644
index 0292e42d..00000000
--- a/app/schemas/com.jeeldobariya.passcodes.database.MasterDatabase/1.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "formatVersion": 1,
- "database": {
- "version": 1,
- "identityHash": "14ca55af836200a4982f037d2dc57317",
- "entities": [
- {
- "tableName": "passwords",
- "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `domain` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `notes` TEXT NOT NULL, `created_at` TEXT DEFAULT CURRENT_TIMESTAMP, `updated_at` TEXT DEFAULT CURRENT_TIMESTAMP)",
- "fields": [
- {
- "fieldPath": "id",
- "columnName": "id",
- "affinity": "INTEGER",
- "notNull": true
- },
- {
- "fieldPath": "domain",
- "columnName": "domain",
- "affinity": "TEXT",
- "notNull": true
- },
- {
- "fieldPath": "username",
- "columnName": "username",
- "affinity": "TEXT",
- "notNull": true
- },
- {
- "fieldPath": "password",
- "columnName": "password",
- "affinity": "TEXT",
- "notNull": true
- },
- {
- "fieldPath": "notes",
- "columnName": "notes",
- "affinity": "TEXT",
- "notNull": true
- },
- {
- "fieldPath": "createdAt",
- "columnName": "created_at",
- "affinity": "TEXT",
- "defaultValue": "CURRENT_TIMESTAMP"
- },
- {
- "fieldPath": "updatedAt",
- "columnName": "updated_at",
- "affinity": "TEXT",
- "defaultValue": "CURRENT_TIMESTAMP"
- }
- ],
- "primaryKey": {
- "autoGenerate": true,
- "columnNames": [
- "id"
- ]
- }
- }
- ],
- "setupQueries": [
- "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
- "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '14ca55af836200a4982f037d2dc57317')"
- ]
- }
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4a0a13fd..f700473a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -29,7 +29,6 @@
-
diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/AuthActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/AuthActivity.kt
index 3335e370..6093386e 100644
--- a/app/src/main/kotlin/com/jeeldobariya/passcodes/AuthActivity.kt
+++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/AuthActivity.kt
@@ -25,6 +25,7 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
@@ -38,12 +39,16 @@ import com.jeeldobariya.passcodes.core.feature_flags.featureFlagsDatastore
import com.jeeldobariya.passcodes.design_system.theme.PasscodesTheme
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
+import androidx.core.net.toUri
+import androidx.compose.material3.AlertDialog
class AuthActivity : AppCompatActivity() {
private lateinit var biometricPrompt: BiometricPrompt
private lateinit var promptInfo: BiometricPrompt.PromptInfo
+ private var showDeprecationDialog = mutableStateOf(true)
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -55,11 +60,89 @@ class AuthActivity : AppCompatActivity() {
setContent {
PasscodesTheme {
+
+ if (showDeprecationDialog.value) {
+ DeprecationDialog(
+ onDismiss = { showDeprecationDialog.value = false },
+ onUpdate = {
+ Intent(Intent.ACTION_VIEW,
+ Constant.WEBSITE_URL.toUri()).also {
+ startActivity(it)
+ }
+ }
+ )
+ }
+
AuthScreenContent()
}
}
}
+ @Composable
+ private fun DeprecationDialog(onDismiss: () -> Unit, onUpdate: () -> Unit) {
+ AlertDialog(
+ onDismissRequest = { /* Rigid: user must choose an action */ },
+ title = {
+ Column {
+ Text(
+ text = " 🛑 End of Support Notice",
+ style = MaterialTheme.typography.headlineSmall,
+ fontWeight = FontWeight.ExtraBold
+ )
+ }
+ },
+ text = {
+ Column(verticalArrangement = Arrangement.spacedBy(12.dp)) {
+ Text(
+ text = "As of now & forwards, we are officially deprecating all versions v2.x.x and prior.",
+ fontWeight = FontWeight.SemiBold,
+ color = MaterialTheme.colorScheme.onSurface
+ )
+
+ Text(
+ text = "To ensure your data remains secure and you keep access to your passcodes, please update to the latest version immediately.",
+ style = MaterialTheme.typography.bodyMedium,
+ color = MaterialTheme.colorScheme.onSurfaceVariant
+ )
+
+ Text(
+ text = "Version 3.0.0 is coming soon",
+ style = MaterialTheme.typography.bodySmall.copy(fontWeight = FontWeight.Bold), // Explicit bold
+ color = MaterialTheme.colorScheme.primary // Use primary to highlight the upcoming good news
+ )
+
+ Text(
+ text = "END OF SUPPORT: May 25, 2026",
+ style = MaterialTheme.typography.labelLarge,
+ color = MaterialTheme.colorScheme.error,
+ fontWeight = FontWeight.Bold
+ )
+ }
+ },
+ confirmButton = {
+ Column(modifier = Modifier.fillMaxWidth()) {
+ Button(
+ onClick = onUpdate,
+ modifier = Modifier.fillMaxWidth()
+ ) {
+ Text("Download Latest Version")
+ }
+ TextButton(
+ onClick = onDismiss,
+ modifier = Modifier.fillMaxWidth()
+ ) {
+ Text(
+ text = "Continue with Legacy Version (Unsafe)",
+ color = MaterialTheme.colorScheme.error,
+ fontSize = 12.sp
+ )
+ }
+ }
+ },
+ dismissButton = null
+ )
+ }
+
@Composable
private fun AuthScreenContent() {
Scaffold { padding ->
diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/Constants.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/Constants.kt
index 37e4fc57..c7df480e 100644
--- a/app/src/main/kotlin/com/jeeldobariya/passcodes/Constants.kt
+++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/Constants.kt
@@ -1,11 +1,14 @@
package com.jeeldobariya.passcodes
object Constant {
+
+ const val GH_DOMAIN_URL = "https://passcodesapp.github.io"
const val REPOSITORY_SIGNATURE = "PasscodesApp/Passcodes"
// Main URL Constants
- const val DOCS_WEBSITE_URL = "https://passcodesapp.github.io/Passcodes-Docs"
- const val TELEGRAM_COMMUNITY_URL = "https://t.me/passcodescommunity"
+ const val WEBSITE_URL = "$GH_DOMAIN_URL/Passcodes-Website"
+ const val DOCS_WEBSITE_URL = "$GH_DOMAIN_URL/Passcodes-Docs"
+ const val DISCORD_COMMUNITY_URL = "https://discord.gg/zPbk2gp3Sg"
const val REPOSITORY_URL = "https://github.com/$REPOSITORY_SIGNATURE"
// URL Constants
diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/MainActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/MainActivity.kt
index 0f71c452..b4ea8c12 100644
--- a/app/src/main/kotlin/com/jeeldobariya/passcodes/MainActivity.kt
+++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/MainActivity.kt
@@ -29,7 +29,7 @@ class MainActivity : ComponentActivity() {
checkForUpdateUseCase(
currentVersion = BuildConfig.VERSION_NAME,
githubReleaseApiUrl = Constant.GITHUB_RELEASE_API_URL,
- telegramCommunityUrl = Constant.TELEGRAM_COMMUNITY_URL
+ discordUrl = Constant.DISCORD_COMMUNITY_URL
)
}
diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/AboutUsActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/AboutUsActivity.kt
index d9752697..b9f23707 100644
--- a/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/AboutUsActivity.kt
+++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/AboutUsActivity.kt
@@ -53,7 +53,7 @@ class AboutUsActivity : AppCompatActivity() {
}
binding.cardTelegramCommunity.setOnClickListener {
- openBrowser(Constant.TELEGRAM_COMMUNITY_URL)
+ openBrowser(Constant.DISCORD_COMMUNITY_URL)
}
}
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/MainActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/MainActivity.kt
index 0c6b3b09..51d5c021 100644
--- a/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/MainActivity.kt
+++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/MainActivity.kt
@@ -3,6 +3,7 @@ package com.jeeldobariya.passcodes.oldui
import android.content.Intent
import android.os.Bundle
import android.util.Log
+import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat
import androidx.lifecycle.lifecycleScope
@@ -41,16 +42,14 @@ class MainActivity : AppCompatActivity() {
val result = checkForUpdateUseCase(
currentVersion = BuildConfig.VERSION_NAME,
githubReleaseApiUrl = Constant.GITHUB_RELEASE_API_URL,
- telegramCommunityUrl = Constant.TELEGRAM_COMMUNITY_URL
+ discordUrl = Constant.DISCORD_COMMUNITY_URL
)
when (result) {
UpdateCheckingResult.ON_UNOFFICIAL_RELEASE,
- UpdateCheckingResult.ON_PRE_RELEASE
- -> {
- Intent(this@MainActivity, UpdateCheckingActivity::class.java).also {
- startActivity(it)
- }
+ UpdateCheckingResult.ON_PRE_RELEASE -> {
+ Toast.makeText(this@MainActivity, "You are on a Unofficial Release", Toast.LENGTH_LONG).show()
+ Toast.makeText(this@MainActivity, "Update as soon as possible!!", Toast.LENGTH_LONG).show()
}
else -> Log.e("UpdateChecking", result.toString())
}
diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdateCheckingActivity.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdateCheckingActivity.kt
deleted file mode 100644
index 919b3269..00000000
--- a/app/src/main/kotlin/com/jeeldobariya/passcodes/oldui/UpdateCheckingActivity.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.jeeldobariya.passcodes.oldui
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.jeeldobariya.passcodes.core.datastore.appDatastore
-import com.jeeldobariya.passcodes.databinding.ActivityUpdateCheckingBinding
-import kotlinx.coroutines.flow.first
-import kotlinx.coroutines.runBlocking
-
-class UpdateCheckingActivity: AppCompatActivity() {
-
- private lateinit var binding: ActivityUpdateCheckingBinding
-
- override fun onCreate(savedInstanceState: Bundle?) {
- runBlocking {
- setTheme(appDatastore.data.first().theme)
- }
-
- super.onCreate(savedInstanceState)
- binding = ActivityUpdateCheckingBinding.inflate(layoutInflater)
- setContentView(binding.root)
- }
-}
diff --git a/app/src/main/kotlin/com/jeeldobariya/passcodes/presentation/about_screen/ClassicalAboutScreen.kt b/app/src/main/kotlin/com/jeeldobariya/passcodes/presentation/about_screen/ClassicalAboutScreen.kt
index 1c6ca6d1..7bb7db84 100644
--- a/app/src/main/kotlin/com/jeeldobariya/passcodes/presentation/about_screen/ClassicalAboutScreen.kt
+++ b/app/src/main/kotlin/com/jeeldobariya/passcodes/presentation/about_screen/ClassicalAboutScreen.kt
@@ -182,10 +182,9 @@ private fun AboutGridSection() {
)
}
- TelegramCard(
- text = stringResource(R.string.view_telegram_community_text),
+ DiscordCard(
onClick = {
- Intent(Intent.ACTION_VIEW, Constant.TELEGRAM_COMMUNITY_URL.toUri()).also {
+ Intent(Intent.ACTION_VIEW, Constant.DISCORD_COMMUNITY_URL.toUri()).also {
context.startActivity(it)
}
}
@@ -229,8 +228,8 @@ private fun AboutCard(
}
@Composable
-private fun TelegramCard(
- text: String,
+private fun DiscordCard(
+ text: String = "Join Discord",
onClick: () -> Unit
) {
Card(
diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml
index 6075a040..4e6b3534 100644
--- a/app/src/main/res/layout/activity_about_us.xml
+++ b/app/src/main/res/layout/activity_about_us.xml
@@ -208,17 +208,17 @@
android:padding="16dp">
diff --git a/app/src/main/res/layout/activity_update_checking.xml b/app/src/main/res/layout/activity_update_checking.xml
deleted file mode 100644
index bdf11c3a..00000000
--- a/app/src/main/res/layout/activity_update_checking.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/core/src/main/kotlin/com/jeeldobariya/passcodes/core/domain/usecases/CheckForUpdateUseCase.kt b/core/src/main/kotlin/com/jeeldobariya/passcodes/core/domain/usecases/CheckForUpdateUseCase.kt
index abb0d749..29e9f4aa 100644
--- a/core/src/main/kotlin/com/jeeldobariya/passcodes/core/domain/usecases/CheckForUpdateUseCase.kt
+++ b/core/src/main/kotlin/com/jeeldobariya/passcodes/core/domain/usecases/CheckForUpdateUseCase.kt
@@ -28,7 +28,7 @@ class CheckForUpdateUseCase(
suspend operator fun invoke(
currentVersion: String,
githubReleaseApiUrl: String,
- telegramCommunityUrl: String
+ discordUrl: String
): UpdateCheckingResult = withContext(dispatcher) {
val currNormalizedVersion = SemVerUtils.normalize(currentVersion)
@@ -47,7 +47,7 @@ class CheckForUpdateUseCase(
userReleaseFound = true
if (release.prerelease) {
showToast("⚠️ You are using a PRE-RELEASE ($currNormalizedVersion). Not safe for use!!")
- showToast("Join telegram @ ($telegramCommunityUrl)")
+ showToast("Join Discord @ ($discordUrl)")
return@withContext UpdateCheckingResult.ON_PRE_RELEASE
}
@@ -71,7 +71,7 @@ class CheckForUpdateUseCase(
if (!userReleaseFound) {
showToast("⚠️ Version ($currNormalizedVersion) is not an official releases on github...")
- showToast("Join telegram @ ($telegramCommunityUrl)")
+ showToast("Join Discord @ ($discordUrl)")
return@withContext UpdateCheckingResult.ON_UNOFFICIAL_RELEASE
}
diff --git a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt
index 1b789ee8..37b6f822 100644
--- a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt
+++ b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt
@@ -2,15 +2,12 @@ package com.jeeldobariya.passcodes.password_manager.oldui
import android.content.Intent
import android.os.Bundle
-import android.view.View.GONE
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat
import androidx.lifecycle.lifecycleScope
import com.jeeldobariya.passcodes.core.datastore.appDatastore
-import com.jeeldobariya.passcodes.core.feature_flags.featureFlagsDatastore
-import com.jeeldobariya.passcodes.core.utils.collectLatestLifecycleFlow
import com.jeeldobariya.passcodes.password_manager.R
import com.jeeldobariya.passcodes.password_manager.databinding.ActivityPasswordManagerBinding
import com.jeeldobariya.passcodes.password_manager.domain.usecases.ExportPasswordCSVUseCase
@@ -67,13 +64,6 @@ class PasswordManagerActivity : AppCompatActivity() {
binding = ActivityPasswordManagerBinding.inflate(layoutInflater)
setContentView(binding.root)
- collectLatestLifecycleFlow(featureFlagsDatastore.data) {
- if (!it.isPreviewFeaturesEnabled) {
- binding.importPasswordBtn.visibility = GONE
- binding.exportPasswordBtn.visibility = GONE
- }
- }
-
// Add event onclick listener
addOnClickListenerOnButton(binding)
diff --git a/password_manager/src/main/res/values/strings.xml b/password_manager/src/main/res/values/strings.xml
index 10594826..edb94c6e 100644
--- a/password_manager/src/main/res/values/strings.xml
+++ b/password_manager/src/main/res/values/strings.xml
@@ -15,8 +15,8 @@
Load Password
Update Password
Delete Password
- Import G-Password
- Export G-Password
+ Import Goggle-Password
+ Export Goggle-Password
Password Manager