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