diff --git a/app/src/main/java/org/fnives/tiktokdownloader/ui/main/MainActivity.kt b/app/src/main/java/org/fnives/tiktokdownloader/ui/main/MainActivity.kt index 3698549..5cb7f1d 100644 --- a/app/src/main/java/org/fnives/tiktokdownloader/ui/main/MainActivity.kt +++ b/app/src/main/java/org/fnives/tiktokdownloader/ui/main/MainActivity.kt @@ -9,6 +9,8 @@ import android.view.animation.OvershootInterpolator import androidx.annotation.StringRes import androidx.appcompat.app.AppCompatActivity import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.view.doOnPreDraw +import androidx.core.view.isVisible import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.snackbar.Snackbar @@ -114,14 +116,18 @@ class MainActivity : AppCompatActivity() { private fun animateFabVisibility(downloadFab: FloatingActionButton, visible: Boolean) { val scale = if (visible) 1f else 0f val translation = if (visible) 0f else downloadFab.height * 2 / 3f + downloadFab.isVisible = true downloadFab.clearAnimation() - downloadFab.animate() - .scaleX(scale) - .scaleY(scale) - .setDuration(FAB_VISIBILITY_ANIMATION_DURATION) - .setInterpolator(fabVisibilityInterpolator) - .translationY(translation) - .start() + downloadFab.doOnPreDraw { + downloadFab.animate() + .scaleX(scale) + .scaleY(scale) + .setDuration(FAB_VISIBILITY_ANIMATION_DURATION) + .setInterpolator(fabVisibilityInterpolator) + .translationY(translation) + .withEndAction { downloadFab.isVisible = visible } + .start() + } } } } \ No newline at end of file diff --git a/app/src/main/java/org/fnives/tiktokdownloader/ui/main/queue/QueueFragment.kt b/app/src/main/java/org/fnives/tiktokdownloader/ui/main/queue/QueueFragment.kt index 1502e10..77239f1 100644 --- a/app/src/main/java/org/fnives/tiktokdownloader/ui/main/queue/QueueFragment.kt +++ b/app/src/main/java/org/fnives/tiktokdownloader/ui/main/queue/QueueFragment.kt @@ -1,16 +1,19 @@ package org.fnives.tiktokdownloader.ui.main.queue +import android.content.ActivityNotFoundException import android.content.Intent import android.net.Uri import android.os.Bundle import android.view.View import android.widget.Button import android.widget.EditText +import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.net.toUri import androidx.core.widget.doAfterTextChanged import androidx.fragment.app.Fragment import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.snackbar.Snackbar import org.fnives.tiktokdownloader.R import org.fnives.tiktokdownloader.data.model.VideoState import org.fnives.tiktokdownloader.di.provideViewModels @@ -46,7 +49,12 @@ class QueueFragment : Fragment(R.layout.fragment_queue) { createGalleryIntent(data.uri) null -> return@observe } - startActivity(intent) + try { + startActivity(intent) + } catch(activityNotFoundException: ActivityNotFoundException) { + val anchor = activity?.findViewById(R.id.snack_bar_anchor) ?: return@observe + Snackbar.make(anchor, R.string.could_not_open, Snackbar.LENGTH_SHORT).show() + } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7043b0f..17a7a0f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -46,4 +46,5 @@ The download may fail for various reasons. In such case on the Queue screen you will see a refresh icon. Pressing that will retry the download. It\'s possible if you try to download too many videos at the same time captcha will be triggered. Since we don\'t want to overload the server, in such case you will need to wait a couple hours to properly retry the download. If that still doesn\'t work you may need to verify a captcha on the same network. This is an open source project. You can see the repository clicking here. + Couldn\'t open! \ No newline at end of file