Skip to content

Commit

Permalink
For mozilla-mobile#3478 - Add Tab sent snackbar confirmation for devi…
Browse files Browse the repository at this point in the history
…ce sharing
  • Loading branch information
ekager committed Jul 9, 2019
1 parent 41ace51 commit 095104e
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 12 deletions.
19 changes: 17 additions & 2 deletions app/src/main/java/org/mozilla/fenix/HomeActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.NavigationUI
import com.google.android.material.snackbar.Snackbar
import io.sentry.Sentry
import io.sentry.event.Breadcrumb
import io.sentry.event.BreadcrumbBuilder
Expand All @@ -31,9 +32,11 @@ import mozilla.components.support.base.feature.BackHandler
import mozilla.components.support.ktx.kotlin.isUrl
import mozilla.components.support.ktx.kotlin.toNormalizedUrl
import mozilla.components.support.utils.SafeIntent
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.isSentryEnabled
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getRootView
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.home.HomeFragmentDirections
import org.mozilla.fenix.library.bookmarks.BookmarkFragmentDirections
Expand All @@ -44,10 +47,11 @@ import org.mozilla.fenix.settings.AccountProblemFragmentDirections
import org.mozilla.fenix.settings.PairFragmentDirections
import org.mozilla.fenix.settings.SettingsFragmentDirections
import org.mozilla.fenix.settings.TurnOnSyncFragmentDirections
import org.mozilla.fenix.share.ShareFragment
import org.mozilla.fenix.utils.Settings

@SuppressWarnings("TooManyFunctions")
open class HomeActivity : AppCompatActivity() {
@SuppressWarnings("TooManyFunctions", "LargeClass")
open class HomeActivity : AppCompatActivity(), ShareFragment.TabsSharedCallback {
open val isCustomTab = false
private var sessionObserver: SessionManager.Observer? = null

Expand Down Expand Up @@ -370,6 +374,17 @@ open class HomeActivity : AppCompatActivity() {
}.also { components.core.sessionManager.register(it, this) }
}

override fun onTabsShared(tabsSize: Int) {
this@HomeActivity.getRootView()?.let {
FenixSnackbar.make(it, Snackbar.LENGTH_SHORT).setText(
getString(
if (tabsSize == 1) R.string.sync_sent_tab_snackbar else
R.string.sync_sent_tabs_snackbar
)
).show()
}
}

companion object {
const val OPEN_TO_BROWSER = "open_to_browser"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@ import java.net.URL

@SuppressWarnings("TooManyFunctions", "LargeClass")
class BrowserFragment : Fragment(), BackHandler {

private lateinit var toolbarComponent: ToolbarComponent

private var tabCollectionObserver: Observer<List<TabCollection>>? = null
Expand Down Expand Up @@ -953,7 +952,7 @@ class BrowserFragment : Fragment(), BackHandler {
}

private fun shareUrl(url: String) {
val directions = BrowserFragmentDirections.actionBrowserFragmentToShareFragment(url)
val directions = BrowserFragmentDirections.actionBrowserFragmentToShareFragment(url = url)
nav(R.id.browserFragment, directions)
}

Expand Down
5 changes: 4 additions & 1 deletion app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -717,7 +717,10 @@ class HomeFragment : Fragment(), AccountObserver {

private fun share(url: String? = null, tabs: List<ShareTab>? = null) {
val directions =
HomeFragmentDirections.actionHomeFragmentToShareFragment(url = url, tabs = tabs?.toTypedArray())
HomeFragmentDirections.actionHomeFragmentToShareFragment(
url = url,
tabs = tabs?.toTypedArray()
)
nav(R.id.homeFragment, directions)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,8 @@ class BookmarkFragment : Fragment(), BackHandler, AccountObserver {
nav(
R.id.bookmarkFragment,
BookmarkFragmentDirections.actionBookmarkFragmentToShareFragment(
this,
it.item.title
url = this,
title = it.item.title
)
)
metrics()?.track(Event.ShareBookmark)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,10 @@ class HistoryFragment : Fragment(), BackHandler {

private fun share(url: String? = null, tabs: List<ShareTab>? = null) {
val directions =
HistoryFragmentDirections.actionHistoryFragmentToShareFragment(url = url, tabs = tabs?.toTypedArray())
HistoryFragmentDirections.actionHistoryFragmentToShareFragment(
url = url,
tabs = tabs?.toTypedArray()
)
nav(R.id.historyFragment, directions)
}

Expand Down
7 changes: 6 additions & 1 deletion app/src/main/java/org/mozilla/fenix/share/ShareFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,18 @@ import kotlinx.android.synthetic.main.fragment_share.view.*
import mozilla.components.concept.sync.DeviceEventOutgoing
import mozilla.components.concept.sync.OAuthAccount
import org.mozilla.fenix.FenixViewModelProvider
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.mvi.ActionBusFactory
import org.mozilla.fenix.mvi.getAutoDisposeObservable

class ShareFragment : AppCompatDialogFragment() {
interface TabsSharedCallback {
fun onTabsShared(tabsSize: Int)
}

private lateinit var component: ShareComponent
private var tabs: Array<ShareTab> = emptyArray()

Expand All @@ -39,7 +44,6 @@ class ShareFragment : AppCompatDialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_share, container, false)
val args = ShareFragmentArgs.fromBundle(arguments!!)

if (args.url == null && args.tabs.isNullOrEmpty()) {
throw IllegalStateException("URL and tabs cannot both be null.")
}
Expand Down Expand Up @@ -131,6 +135,7 @@ class ShareFragment : AppCompatDialogFragment() {
)
}
}
(activity as? HomeActivity)?.onTabsShared(tabs.size)
}
}

Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/navigation/nav_graph.xml
Original file line number Diff line number Diff line change
Expand Up @@ -419,8 +419,8 @@
<argument
android:name="tabs"
android:defaultValue="@null"
app:nullable="true"
app:argType="org.mozilla.fenix.share.ShareTab[]" />
app:argType="org.mozilla.fenix.share.ShareTab[]"
app:nullable="true" />
<action
android:id="@+id/action_shareFragment_to_turnOnSyncFragment"
app:destination="@+id/turnOnSyncFragment"
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values/static_strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
%1$s is produced by Mozilla.
</string>


<!-- 1.0.1 strings -->
<!-- Bookmark deletion confirmation -->
<string name="bookmark_deletion_confirmation" translatable="false">Are you sure you want to delete this bookmark?</string>
Expand Down

0 comments on commit 095104e

Please sign in to comment.