Skip to content

Commit 0a6fc61

Browse files
committed
refactor: Refactor Snackbar usage to shared showSnackbarWithAction extension
1 parent dfb979a commit 0a6fc61

4 files changed

Lines changed: 44 additions & 12 deletions

File tree

owncloudApp/src/main/java/com/owncloud/android/extensions/ActivityExt.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ fun Activity.showMessageInSnackbar(
9292

9393
fun Activity.showSnackbarWithAction(
9494
message: CharSequence,
95-
action: () -> Unit,
9695
actionText: CharSequence,
96+
action: () -> Unit,
9797
duration: Int = Snackbar.LENGTH_LONG,
9898
layoutId: Int = android.R.id.content
9999
) {

owncloudApp/src/main/java/com/owncloud/android/extensions/FragmentExt.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,18 @@ fun Fragment.showMessageInSnackbar(
5151
Snackbar.make(requiredView, message, duration).show()
5252
}
5353

54+
fun Fragment.showSnackbarWithAction(
55+
message: CharSequence,
56+
actionText: CharSequence,
57+
action: () -> Unit,
58+
duration: Int = Snackbar.LENGTH_LONG
59+
) {
60+
val requiredView = view ?: return
61+
Snackbar.make(requiredView, message, duration)
62+
.setAction(actionText) { action() }
63+
.show()
64+
}
65+
5466
fun Fragment.showAlertDialog(
5567
title: String,
5668
message: String,

owncloudApp/src/main/java/com/owncloud/android/presentation/files/details/FileDetailsFragment.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import com.owncloud.android.extensions.openOCFile
5757
import com.owncloud.android.extensions.sendDownloadedFilesByShareSheet
5858
import com.owncloud.android.extensions.showErrorInSnackbar
5959
import com.owncloud.android.extensions.showMessageInSnackbar
60+
import com.owncloud.android.extensions.showSnackbarWithAction
6061
import com.owncloud.android.presentation.authentication.ACTION_UPDATE_EXPIRED_TOKEN
6162
import com.owncloud.android.presentation.authentication.EXTRA_ACCOUNT
6263
import com.owncloud.android.presentation.authentication.EXTRA_ACTION
@@ -163,16 +164,18 @@ class FileDetailsFragment : FileFragment() {
163164
when (uiResult) {
164165
is UIResult.Error -> {
165166
if (uiResult.error is AccountNotFoundException) {
166-
Snackbar.make(view, getString(R.string.sync_fail_ticker_unauthorized), Snackbar.LENGTH_INDEFINITE)
167-
.setAction(R.string.auth_oauth_failure_snackbar_action) {
167+
showSnackbarWithAction(
168+
message = getString(R.string.sync_fail_ticker_unauthorized),
169+
actionText = getString(R.string.auth_oauth_failure_snackbar_action),
170+
action = {
168171
val updateAccountCredentials = Intent(requireActivity(), LoginActivity::class.java)
169172
updateAccountCredentials.apply {
170173
putExtra(EXTRA_ACCOUNT, fileDetailsViewModel.getAccount())
171174
putExtra(EXTRA_ACTION, ACTION_UPDATE_EXPIRED_TOKEN)
172175
addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
173176
}
174177
startActivity(updateAccountCredentials)
175-
}.show()
178+
})
176179
} else {
177180
showErrorInSnackbar(R.string.sync_fail_ticker, uiResult.error)
178181
fileDetailsViewModel.updateActionInDetailsView(NONE)

owncloudApp/src/main/java/com/owncloud/android/ui/activity/FileActivity.java

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,11 @@
5858
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;
5959
import com.owncloud.android.ui.errorhandling.ErrorMessageAdapter;
6060
import com.owncloud.android.ui.helpers.FileOperationsHelper;
61+
import kotlin.Unit;
6162
import timber.log.Timber;
6263

64+
import static com.owncloud.android.extensions.ActivityExtKt.showSnackbarWithAction;
65+
6366
/**
6467
* Activity with common behaviour for activities handling {@link OCFile}s in ownCloud {@link Account}s .
6568
*/
@@ -278,18 +281,32 @@ protected void showRequestAccountChangeNotice(String errorMessage, boolean mustC
278281
.setCancelable(false)
279282
.show();
280283
} else {
281-
Snackbar.make(findViewById(android.R.id.content), errorMessage, Snackbar.LENGTH_INDEFINITE)
282-
.setAction(R.string.auth_oauth_failure_snackbar_action, v ->
283-
requestCredentialsUpdate())
284-
.show();
284+
showSnackbarWithAction(
285+
this,
286+
errorMessage,
287+
getString(R.string.auth_oauth_failure_snackbar_action),
288+
() -> {
289+
requestCredentialsUpdate();
290+
return Unit.INSTANCE;
291+
},
292+
Snackbar.LENGTH_INDEFINITE,
293+
android.R.id.content
294+
);
285295
}
286296
}
287297

288298
protected void showRequestRegainAccess() {
289-
Snackbar.make(findViewById(android.R.id.content), R.string.auth_oauth_failure, Snackbar.LENGTH_INDEFINITE)
290-
.setAction(R.string.auth_oauth_failure_snackbar_action, v ->
291-
requestCredentialsUpdate())
292-
.show();
299+
showSnackbarWithAction(
300+
this,
301+
getString(R.string.auth_oauth_failure),
302+
getString(R.string.auth_oauth_failure_snackbar_action),
303+
() -> {
304+
requestCredentialsUpdate();
305+
return Unit.INSTANCE;
306+
},
307+
Snackbar.LENGTH_INDEFINITE,
308+
android.R.id.content
309+
);
293310
}
294311

295312
/**

0 commit comments

Comments
 (0)