diff --git a/app/src/main/java/net/opendasharchive/openarchive/features/internetarchive/presentation/InternetArchiveFragment.kt b/app/src/main/java/net/opendasharchive/openarchive/features/internetarchive/presentation/InternetArchiveFragment.kt
index 950267db..c2a2fb53 100644
--- a/app/src/main/java/net/opendasharchive/openarchive/features/internetarchive/presentation/InternetArchiveFragment.kt
+++ b/app/src/main/java/net/opendasharchive/openarchive/features/internetarchive/presentation/InternetArchiveFragment.kt
@@ -74,6 +74,6 @@ class InternetArchiveFragment : BaseFragment(), ToolbarConfigurable {
fun newInstance() = newInstance(args = bundleWithNewSpace())
}
- override fun getToolbarTitle() = "Internet Archive"
+ override fun getToolbarTitle() = getString(R.string.internet_archive)
override fun shouldShowBackButton() = true
}
diff --git a/app/src/main/java/net/opendasharchive/openarchive/features/settings/SpaceSetupFragment.kt b/app/src/main/java/net/opendasharchive/openarchive/features/settings/SpaceSetupFragment.kt
index b8bc89bf..34c0448c 100644
--- a/app/src/main/java/net/opendasharchive/openarchive/features/settings/SpaceSetupFragment.kt
+++ b/app/src/main/java/net/opendasharchive/openarchive/features/settings/SpaceSetupFragment.kt
@@ -93,7 +93,7 @@ class SpaceSetupFragment : BaseFragment() {
const val RESULT_VAL_GDRIVE = "gdrive"
}
- override fun getToolbarTitle() = "Select a Server"
+ override fun getToolbarTitle() = getString(R.string.space_setup_title)
override fun getToolbarSubtitle(): String? = null
override fun shouldShowBackButton() = true
}
\ No newline at end of file
diff --git a/app/src/main/java/net/opendasharchive/openarchive/features/settings/SpaceSetupSuccessFragment.kt b/app/src/main/java/net/opendasharchive/openarchive/features/settings/SpaceSetupSuccessFragment.kt
index 1e637a51..23cbac39 100644
--- a/app/src/main/java/net/opendasharchive/openarchive/features/settings/SpaceSetupSuccessFragment.kt
+++ b/app/src/main/java/net/opendasharchive/openarchive/features/settings/SpaceSetupSuccessFragment.kt
@@ -7,6 +7,7 @@ import android.view.View
import android.view.ViewGroup
import androidx.core.os.bundleOf
import androidx.fragment.app.setFragmentResult
+import net.opendasharchive.openarchive.R
import net.opendasharchive.openarchive.databinding.FragmentSpaceSetupSuccessBinding
import net.opendasharchive.openarchive.features.core.BaseFragment
import net.opendasharchive.openarchive.features.main.MainActivity
@@ -60,6 +61,6 @@ class SpaceSetupSuccessFragment : BaseFragment() {
}
}
- override fun getToolbarTitle() = "Setup Complete"
+ override fun getToolbarTitle() = getString(R.string.space_setup_success_title)
override fun shouldShowBackButton() = false
}
\ No newline at end of file
diff --git a/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/HapticManager.kt b/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/HapticManager.kt
index fa6b2322..edf3e8e8 100644
--- a/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/HapticManager.kt
+++ b/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/HapticManager.kt
@@ -28,4 +28,8 @@ class HapticManager(
}
}
}
+
+ fun clear() {
+ hapticFeedback = null
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/components/NumericKeypad.kt b/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/components/NumericKeypad.kt
index a371e368..1da3385e 100644
--- a/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/components/NumericKeypad.kt
+++ b/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/components/NumericKeypad.kt
@@ -140,7 +140,7 @@ private fun NumberButton(
label: String,
enabled: Boolean = true,
onClick: () -> Unit,
- //hapticManager: HapticManager = koinInject()
+ hapticManager: HapticManager = koinInject()
) {
val interactionSource = remember { MutableInteractionSource() }
@@ -190,7 +190,7 @@ private fun NumberButton(
indication = null,
enabled = enabled,
onClick = {
- //hapticManager.performHapticFeedback(AppHapticFeedbackType.KeyPress)
+ hapticManager.performHapticFeedback(AppHapticFeedbackType.KeyPress)
onClick()
}
)
diff --git a/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/passcode_entry/PasscodeEntryActivity.kt b/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/passcode_entry/PasscodeEntryActivity.kt
index 8e5152d8..9b093b75 100644
--- a/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/passcode_entry/PasscodeEntryActivity.kt
+++ b/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/passcode_entry/PasscodeEntryActivity.kt
@@ -7,6 +7,7 @@ import androidx.activity.compose.setContent
import net.opendasharchive.openarchive.R
import net.opendasharchive.openarchive.core.presentation.theme.SaveAppTheme
import net.opendasharchive.openarchive.features.core.BaseActivity
+import net.opendasharchive.openarchive.features.settings.passcode.HapticManager
import net.opendasharchive.openarchive.features.settings.passcode.PasscodeRepository
import net.opendasharchive.openarchive.features.settings.passcode.components.DefaultScaffold
import org.koin.android.ext.android.inject
@@ -14,6 +15,7 @@ import org.koin.android.ext.android.inject
class PasscodeEntryActivity : BaseActivity() {
private val repository: PasscodeRepository by inject()
+ private val hapticManager: HapticManager by inject()
private val onBackPressedCallback = object : OnBackPressedCallback(enabled = true) {
override fun handleOnBackPressed() {
@@ -55,4 +57,9 @@ class PasscodeEntryActivity : BaseActivity() {
}
}
}
+
+ override fun onDestroy() {
+ super.onDestroy()
+ hapticManager.clear() // Clear the reference to prevent leaks
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/passcode_setup/PasscodeSetupActivity.kt b/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/passcode_setup/PasscodeSetupActivity.kt
index 3e53e056..e974329a 100644
--- a/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/passcode_setup/PasscodeSetupActivity.kt
+++ b/app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/passcode_setup/PasscodeSetupActivity.kt
@@ -11,10 +11,14 @@ import net.opendasharchive.openarchive.R
import net.opendasharchive.openarchive.core.presentation.theme.SaveAppTheme
import net.opendasharchive.openarchive.features.core.BaseActivity
import net.opendasharchive.openarchive.features.internetarchive.presentation.login.ComposeAppBar
+import net.opendasharchive.openarchive.features.settings.passcode.HapticManager
import net.opendasharchive.openarchive.features.settings.passcode.components.DefaultScaffold
+import org.koin.android.ext.android.inject
class PasscodeSetupActivity : BaseActivity() {
+ private val hapticManager: HapticManager by inject()
+
companion object {
const val EXTRA_PASSCODE_ENABLED = "passcode_enabled"
}
@@ -70,4 +74,9 @@ class PasscodeSetupActivity : BaseActivity() {
}
return super.onOptionsItemSelected(item)
}
+
+ override fun onDestroy() {
+ super.onDestroy()
+ hapticManager.clear() // Clear the reference to prevent leaks
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/net/opendasharchive/openarchive/features/spaces/SpaceListFragment.kt b/app/src/main/java/net/opendasharchive/openarchive/features/spaces/SpaceListFragment.kt
index 37b7d576..765b2eb1 100644
--- a/app/src/main/java/net/opendasharchive/openarchive/features/spaces/SpaceListFragment.kt
+++ b/app/src/main/java/net/opendasharchive/openarchive/features/spaces/SpaceListFragment.kt
@@ -8,6 +8,7 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.compose.content
import androidx.navigation.fragment.findNavController
+import net.opendasharchive.openarchive.R
import net.opendasharchive.openarchive.core.presentation.theme.SaveAppTheme
import net.opendasharchive.openarchive.databinding.FragmentSpaceListBinding
import net.opendasharchive.openarchive.db.Space
@@ -49,7 +50,7 @@ class SpaceListFragment : BaseFragment() {
return binding.root
}
- override fun getToolbarTitle() = "Media Servers"
+ override fun getToolbarTitle() = getString(R.string.pref_title_media_servers)
private fun startSpaceAuthActivity(spaceId: Long?) {
val space = Space.get(spaceId ?: return) ?: return
diff --git a/app/src/main/java/net/opendasharchive/openarchive/services/gdrive/GDriveFragment.kt b/app/src/main/java/net/opendasharchive/openarchive/services/gdrive/GDriveFragment.kt
index 4daff4b4..471a047d 100644
--- a/app/src/main/java/net/opendasharchive/openarchive/services/gdrive/GDriveFragment.kt
+++ b/app/src/main/java/net/opendasharchive/openarchive/services/gdrive/GDriveFragment.kt
@@ -161,5 +161,5 @@ class GDriveFragment : BaseFragment() {
}
}
- override fun getToolbarTitle() = "Google Drive"
+ override fun getToolbarTitle() = getString(R.string.gdrive)
}
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 053ec630..e40fb423 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -6,7 +6,8 @@
Save
- Archive Your Media\nlearn more
+
+ Archive Your Media
<a href="#">learn more</a>
741316235729-ohg8quvto8ajl8qpil4r9rm1o3gfml3t.apps.googleusercontent.com
Log in
@@ -96,7 +97,8 @@
Presentation
Theme
- Change Save\'s theme to light/dark
+
+ Change Save's theme to light/dark
System Controlled
Light
Dark
@@ -106,11 +108,16 @@
Enable ProofMode
Share ProofMode public key
+
+
+
+
+
- learn more here
- ]]>
+ ProofMode is a system that enables authentication and verification of multimedia content, <a href="%1$s" style="text-decoration: underline;">learn more here</a>
+
+
ProofMode gathers metadata from local cell towers to help verify media. Android requires permission to enable this setting. Save will only use this setting to capture data and will NOT access your phone to make/manage calls.
ProofMode Identity
@@ -232,6 +239,8 @@
Detected an unsecured internet connection
Version %s
+
+ Select a Server
Private Server
Edit Private Server
@@ -245,6 +254,9 @@
Name your server and choose a license
+
+ Setup Complete
+
Edit Queue
Uploading is paused
@@ -288,12 +300,17 @@
Send your media securely to private servers and lock the app with a pin.
+
+
+
+
+
+
-
- Communicate your intentions for future use by adding a Creative Commons License.
- ]]>
+ Keep your media verifiable, safe and organized for the long-term by uploading it to private or public servers like Nextcloud or the Internet Archive.<br>
+ Communicate your intentions for future use by adding a <a href="%1$s" style="text-decoration: underline;">Creative Commons License</a>.
+
https://creativecommons.org
Automatically upload over TLS (Transport Layer Security) and use Orbot to protect your media in transit over the Tor network.
-
- Save always uploads over TLS (Transport Layer Security) to protect your media in transit.
- To further enhance security, enable Tor to prevent interception of your media from your phone to the server.
- ]]>
+
+
+
+
+
+
+
+ <b><i>Save</i></b> always uploads over TLS (Transport Layer Security) to protect your media in transit.<br>
+ To further enhance security, enable <a href="%1$s" style="text-decoration: underline;">Tor</a> to prevent interception of your media from your phone to the server.
https://www.torproject.org