Replaced all the Toasts with Snackbar

This commit is contained in:
Smarshall 2023-08-19 17:38:52 +05:30
parent d4cae4333b
commit a447196257
23 changed files with 224 additions and 175 deletions

View File

@ -57,7 +57,6 @@ import android.view.ViewTreeObserver.OnGlobalLayoutListener
import android.widget.AdapterView import android.widget.AdapterView
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
@ -67,6 +66,7 @@ import androidx.lifecycle.ViewModelProvider
import autodagger.AutoInjector import autodagger.AutoInjector
import com.bluelinelabs.logansquare.LoganSquare import com.bluelinelabs.logansquare.LoganSquare
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.adapters.ParticipantDisplayItem import com.nextcloud.talk.adapters.ParticipantDisplayItem
import com.nextcloud.talk.adapters.ParticipantsAdapter import com.nextcloud.talk.adapters.ParticipantsAdapter
@ -427,7 +427,9 @@ class CallActivity : CallBaseActivity() {
binding!!.callRecordingIndicator.visibility = View.VISIBLE binding!!.callRecordingIndicator.visibility = View.VISIBLE
if (viewState.showStartedInfo) { if (viewState.showStartedInfo) {
vibrateShort(context) vibrateShort(context)
Toast.makeText(context, context.resources.getString(R.string.record_active_info), Toast.LENGTH_LONG) Snackbar.make(
binding!!.root, context.resources.getString(R.string.record_active_info), Snackbar
.LENGTH_LONG)
.show() .show()
} }
} else if (viewState is RecordingStartingState) { } else if (viewState is RecordingStartingState) {
@ -459,10 +461,10 @@ class CallActivity : CallBaseActivity() {
} }
} else if (viewState is RecordingErrorState) { } else if (viewState is RecordingErrorState) {
if (isAllowedToStartOrStopRecording) { if (isAllowedToStartOrStopRecording) {
Toast.makeText( Snackbar.make(
context, binding!!.root,
context.resources.getString(R.string.record_failed_info), context.resources.getString(R.string.record_failed_info),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} }
binding!!.callRecordingIndicator.visibility = View.GONE binding!!.callRecordingIndicator.visibility = View.GONE
@ -567,10 +569,10 @@ class CallActivity : CallBaseActivity() {
} }
} else { } else {
binding!!.microphoneButton.setOnClickListener { binding!!.microphoneButton.setOnClickListener {
Toast.makeText( Snackbar.make(
context, binding!!.root,
R.string.nc_not_allowed_to_activate_audio, R.string.nc_not_allowed_to_activate_audio,
Toast.LENGTH_SHORT Snackbar.LENGTH_SHORT
).show() ).show()
} }
} }
@ -579,10 +581,10 @@ class CallActivity : CallBaseActivity() {
binding!!.cameraButton.setOnClickListener { onCameraClick() } binding!!.cameraButton.setOnClickListener { onCameraClick() }
} else { } else {
binding!!.cameraButton.setOnClickListener { binding!!.cameraButton.setOnClickListener {
Toast.makeText( Snackbar.make(
context, binding!!.root,
R.string.nc_not_allowed_to_activate_video, R.string.nc_not_allowed_to_activate_video,
Toast.LENGTH_SHORT Snackbar.LENGTH_SHORT
).show() ).show()
} }
} }
@ -612,7 +614,8 @@ class CallActivity : CallBaseActivity() {
callRecordingViewModel!!.clickRecordButton() callRecordingViewModel!!.clickRecordButton()
} }
} else { } else {
Toast.makeText(context, context.resources.getString(R.string.record_active_info), Toast.LENGTH_LONG) Snackbar.make(binding!!.root, context.resources.getString(R.string.record_active_info), Snackbar
.LENGTH_LONG)
.show() .show()
} }
} }
@ -1439,7 +1442,7 @@ class CallActivity : CallBaseActivity() {
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding!!.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
Log.e(TAG, "Failed to fetch capabilities", e) Log.e(TAG, "Failed to fetch capabilities", e)
// unused atm // unused atm
} }
@ -1634,10 +1637,10 @@ class CallActivity : CallBaseActivity() {
private fun showCallRunningSinceOneHourOrMoreInfo() { private fun showCallRunningSinceOneHourOrMoreInfo() {
binding!!.callDuration.setTypeface(null, Typeface.BOLD) binding!!.callDuration.setTypeface(null, Typeface.BOLD)
vibrateShort(context) vibrateShort(context)
Toast.makeText( Snackbar.make(
context, binding!!.root,
context.resources.getString(R.string.call_running_since_one_hour), context.resources.getString(R.string.call_running_since_one_hour),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} }
@ -1911,7 +1914,7 @@ class CallActivity : CallBaseActivity() {
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding!!.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
Log.e(TAG, "Error while leaving the call", e) Log.e(TAG, "Error while leaving the call", e)
} }
@ -2093,10 +2096,10 @@ class CallActivity : CallBaseActivity() {
} else { } else {
if (peerConnectionFactory == null) { if (peerConnectionFactory == null) {
Log.e(TAG, "peerConnectionFactory was null in getOrCreatePeerConnectionWrapperForSessionIdAndType") Log.e(TAG, "peerConnectionFactory was null in getOrCreatePeerConnectionWrapperForSessionIdAndType")
Toast.makeText( Snackbar.make(
context, binding!!.root,
context.resources.getString(R.string.nc_common_error_sorry), context.resources.getString(R.string.nc_common_error_sorry),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
hangup(true) hangup(true)
return null return null
@ -2725,10 +2728,10 @@ class CallActivity : CallBaseActivity() {
} }
raisedHand = true raisedHand = true
val nick = callParticipantModel.nick val nick = callParticipantModel.nick
Toast.makeText( Snackbar.make(
context, binding!!.root,
String.format(context.resources.getString(R.string.nc_call_raised_hand), nick), String.format(context.resources.getString(R.string.nc_call_raised_hand), nick),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} }

View File

@ -32,9 +32,9 @@ import android.util.Log
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.BuildConfig import com.nextcloud.talk.BuildConfig
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.databinding.ActivityFullScreenImageBinding import com.nextcloud.talk.databinding.ActivityFullScreenImageBinding
@ -133,7 +133,7 @@ class FullScreenImageActivity : AppCompatActivity() {
// info that 100MB is the limit comes from https://stackoverflow.com/a/53334563 // info that 100MB is the limit comes from https://stackoverflow.com/a/53334563
if (bitmapSize > HUNDRED_MB) { if (bitmapSize > HUNDRED_MB) {
Log.e(TAG, "bitmap will be too large to display. It won't be displayed to avoid RuntimeException") Log.e(TAG, "bitmap will be too large to display. It won't be displayed to avoid RuntimeException")
Toast.makeText(this, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} else { } else {
binding.photoView.setImageBitmap(bitmap) binding.photoView.setImageBitmap(bitmap)
} }

View File

@ -37,8 +37,7 @@ import android.view.OrientationEventListener;
import android.view.ScaleGestureDetector; import android.view.ScaleGestureDetector;
import android.view.Surface; import android.view.Surface;
import android.view.View; import android.view.View;
import android.widget.Toast; import com.google.android.material.snackbar.Snackbar;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
import com.nextcloud.talk.R; import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.application.NextcloudTalkApplication;
@ -234,7 +233,7 @@ public class TakePhotoActivity extends AppCompatActivity {
binding.photoPreview.setMediumScale(MEDIUM_SCALE); binding.photoPreview.setMediumScale(MEDIUM_SCALE);
} catch (IllegalArgumentException | ExecutionException | InterruptedException e) { } catch (IllegalArgumentException | ExecutionException | InterruptedException e) {
Log.e(TAG, "Error taking picture", e); Log.e(TAG, "Error taking picture", e);
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); Snackbar.make(binding.getRoot(), e.getMessage(), Snackbar.LENGTH_LONG).show();
finish(); finish();
} }
}, ContextCompat.getMainExecutor(this)); }, ContextCompat.getMainExecutor(this));
@ -326,7 +325,7 @@ public class TakePhotoActivity extends AppCompatActivity {
}); });
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG, "error while taking picture", e); Log.e(TAG, "error while taking picture", e);
Toast.makeText(this, R.string.take_photo_error_deleting_picture, Toast.LENGTH_SHORT).show(); Snackbar.make(binding.getRoot(), R.string.take_photo_error_deleting_picture, Snackbar.LENGTH_SHORT).show();
} }
}); });

View File

@ -37,9 +37,9 @@ import android.view.MotionEvent
import android.view.View import android.view.View
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import android.widget.Toast
import autodagger.AutoInjector import autodagger.AutoInjector
import coil.load import coil.load
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
@ -264,7 +264,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) :
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context!!.startActivity(browserIntent) context!!.startActivity(browserIntent)
} else { } else {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
Log.e(TAG, "locationGeoLink was null or empty") Log.e(TAG, "locationGeoLink was null or empty")
} }
} }

View File

@ -33,11 +33,11 @@ import android.view.MotionEvent
import android.view.View import android.view.View
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import android.widget.Toast
import androidx.appcompat.content.res.AppCompatResources import androidx.appcompat.content.res.AppCompatResources
import autodagger.AutoInjector import autodagger.AutoInjector
import coil.load import coil.load
import com.google.android.flexbox.FlexboxLayout import com.google.android.flexbox.FlexboxLayout
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
@ -252,7 +252,7 @@ class OutcomingLocationMessageViewHolder(incomingView: View) :
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context!!.startActivity(browserIntent) context!!.startActivity(browserIntent)
} else { } else {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
Log.e(TAG, "locationGeoLink was null or empty") Log.e(TAG, "locationGeoLink was null or empty")
} }
} }

View File

@ -30,11 +30,11 @@ import android.os.Handler
import android.os.Looper import android.os.Looper
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.widget.Toast
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.core.app.NotificationManagerCompat import androidx.core.app.NotificationManagerCompat
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import autodagger.AutoInjector import autodagger.AutoInjector
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.CallActivity import com.nextcloud.talk.activities.CallActivity
import com.nextcloud.talk.activities.CallBaseActivity import com.nextcloud.talk.activities.CallBaseActivity
@ -210,7 +210,7 @@ class CallNotificationActivity : CallBaseActivity() {
} }
is CallNotificationViewModel.GetRoomErrorState -> { is CallNotificationViewModel.GetRoomErrorState -> {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding!!.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
else -> {} else -> {}

View File

@ -83,7 +83,6 @@ import android.widget.RelativeLayout.BELOW
import android.widget.RelativeLayout.LayoutParams import android.widget.RelativeLayout.LayoutParams
import android.widget.SeekBar import android.widget.SeekBar
import android.widget.TextView import android.widget.TextView
import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.view.ContextThemeWrapper import androidx.appcompat.view.ContextThemeWrapper
@ -114,6 +113,7 @@ import coil.transform.CircleCropTransformation
import com.google.android.flexbox.FlexboxLayout import com.google.android.flexbox.FlexboxLayout
import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButton
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.android.common.ui.theme.utils.ColorRole
import com.nextcloud.talk.BuildConfig import com.nextcloud.talk.BuildConfig
import com.nextcloud.talk.R import com.nextcloud.talk.R
@ -568,7 +568,7 @@ class ChatActivity :
} }
is ChatViewModel.GetRoomErrorState -> { is ChatViewModel.GetRoomErrorState -> {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
else -> {} else -> {}
@ -612,7 +612,7 @@ class ChatActivity :
} }
is ChatViewModel.JoinRoomErrorState -> { is ChatViewModel.JoinRoomErrorState -> {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
else -> {} else -> {}
@ -1166,10 +1166,10 @@ class ChatActivity :
val voiceRecordDuration = voiceRecordEndTime - voiceRecordStartTime val voiceRecordDuration = voiceRecordEndTime - voiceRecordStartTime
if (voiceRecordDuration < MINIMUM_VOICE_RECORD_DURATION) { if (voiceRecordDuration < MINIMUM_VOICE_RECORD_DURATION) {
Log.d(TAG, "voiceRecordDuration: $voiceRecordDuration") Log.d(TAG, "voiceRecordDuration: $voiceRecordDuration")
Toast.makeText( Snackbar.make(
context, binding.root,
context.getString(R.string.nc_voice_message_hold_to_record_info), context.getString(R.string.nc_voice_message_hold_to_record_info),
Toast.LENGTH_SHORT Snackbar.LENGTH_SHORT
).show() ).show()
stopAndDiscardAudioRecording() stopAndDiscardAudioRecording()
return true return true
@ -1675,16 +1675,16 @@ class ChatActivity :
if (conversationUser != null) { if (conversationUser != null) {
runOnUiThread { runOnUiThread {
if (currentConversation?.objectType == ObjectType.ROOM) { if (currentConversation?.objectType == ObjectType.ROOM) {
Toast.makeText( Snackbar.make(
context, binding.root,
context.resources.getString(R.string.switch_to_main_room), context.resources.getString(R.string.switch_to_main_room),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} else { } else {
Toast.makeText( Snackbar.make(
context, binding.root,
context.resources.getString(R.string.switch_to_breakout_room), context.resources.getString(R.string.switch_to_breakout_room),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} }
} }
@ -1846,7 +1846,7 @@ class ChatActivity :
} }
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "failed to initialize mediaPlayer", e) Log.e(TAG, "failed to initialize mediaPlayer", e)
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
} }
} }
@ -2364,12 +2364,18 @@ class ChatActivity :
) )
} }
} catch (e: IllegalStateException) { } catch (e: IllegalStateException) {
Toast.makeText(context, context.resources?.getString(R.string.nc_upload_failed), Toast.LENGTH_LONG) context.resources?.getString(R.string.nc_upload_failed)?.let {
.show() Snackbar.make(binding.root, it, Snackbar
.LENGTH_LONG)
.show()
}
Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e) Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e)
} catch (e: IllegalArgumentException) { } catch (e: IllegalArgumentException) {
Toast.makeText(context, context.resources?.getString(R.string.nc_upload_failed), Toast.LENGTH_LONG) context.resources?.getString(R.string.nc_upload_failed)?.let {
.show() Snackbar.make(binding.root, it, Snackbar
.LENGTH_LONG)
.show()
}
Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e) Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e)
} }
} }
@ -2419,20 +2425,22 @@ class ChatActivity :
UploadAndShareFilesWorker.requestStoragePermission(this) UploadAndShareFilesWorker.requestStoragePermission(this)
} }
} catch (e: IllegalStateException) { } catch (e: IllegalStateException) {
Toast.makeText( Snackbar.make(
context, binding.root,
context.resources?.getString(R.string.nc_upload_failed), R.string.nc_upload_failed,
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
) )
.show() .show()
Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e) Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e)
} catch (e: IllegalArgumentException) { } catch (e: IllegalArgumentException) {
Toast.makeText( context.resources?.getString(R.string.nc_upload_failed)?.let {
context, Snackbar.make(
context.resources?.getString(R.string.nc_upload_failed), binding.root,
Toast.LENGTH_LONG it,
) Snackbar.LENGTH_LONG
.show() )
.show()
}
Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e) Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e)
} }
} }
@ -2488,28 +2496,28 @@ class ChatActivity :
uploadFiles(filesToUpload) uploadFiles(filesToUpload)
} }
} else { } else {
Toast Snackbar
.makeText(context, context.getString(R.string.read_storage_no_permission), Toast.LENGTH_LONG) .make(binding.root, context.getString(R.string.read_storage_no_permission), Snackbar.LENGTH_LONG)
.show() .show()
} }
} else if (requestCode == REQUEST_SHARE_FILE_PERMISSION) { } else if (requestCode == REQUEST_SHARE_FILE_PERMISSION) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
showLocalFilePicker() showLocalFilePicker()
} else { } else {
Toast.makeText( Snackbar.make(
context, binding.root,
context.getString(R.string.nc_file_storage_permission), context.getString(R.string.nc_file_storage_permission),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} }
} else if (requestCode == REQUEST_RECORD_AUDIO_PERMISSION) { } else if (requestCode == REQUEST_RECORD_AUDIO_PERMISSION) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// do nothing. user will tap on the microphone again if he wants to record audio.. // do nothing. user will tap on the microphone again if he wants to record audio..
} else { } else {
Toast.makeText( Snackbar.make(
context, binding.root,
context.getString(R.string.nc_voice_message_missing_audio_permission), context.getString(R.string.nc_voice_message_missing_audio_permission),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} }
} else if (requestCode == REQUEST_READ_CONTACT_PERMISSION) { } else if (requestCode == REQUEST_READ_CONTACT_PERMISSION) {
@ -2517,20 +2525,20 @@ class ChatActivity :
val intent = Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI) val intent = Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI)
startActivityForResult(intent, REQUEST_CODE_SELECT_CONTACT) startActivityForResult(intent, REQUEST_CODE_SELECT_CONTACT)
} else { } else {
Toast.makeText( Snackbar.make(
context, binding.root,
context.getString(R.string.nc_share_contact_permission), context.getString(R.string.nc_share_contact_permission),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} }
} else if (requestCode == REQUEST_CAMERA_PERMISSION) { } else if (requestCode == REQUEST_CAMERA_PERMISSION) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast Snackbar
.makeText(context, context.getString(R.string.camera_permission_granted), Toast.LENGTH_LONG) .make(binding.root, context.getString(R.string.camera_permission_granted), Snackbar.LENGTH_LONG)
.show() .show()
} else { } else {
Toast Snackbar
.makeText(context, context.getString(R.string.take_photo_permission), Toast.LENGTH_LONG) .make(binding.root, context.getString(R.string.take_photo_permission), Snackbar.LENGTH_LONG)
.show() .show()
} }
} }
@ -2563,7 +2571,10 @@ class ChatActivity :
metaData metaData
) )
} catch (e: IllegalArgumentException) { } catch (e: IllegalArgumentException) {
Toast.makeText(context, context.resources?.getString(R.string.nc_upload_failed), Toast.LENGTH_LONG).show() context.resources?.getString(R.string.nc_upload_failed)?.let {
Snackbar.make(binding.root, it, Snackbar.LENGTH_LONG)
.show()
}
Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e) Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e)
} }
} }
@ -3564,7 +3575,7 @@ class ChatActivity :
if (conversationUser != null) { if (conversationUser != null) {
val pp = ParticipantPermissions(conversationUser!!, it) val pp = ParticipantPermissions(conversationUser!!, it)
if (!pp.canStartCall() && currentConversation?.hasCall == false) { if (!pp.canStartCall() && currentConversation?.hasCall == false) {
Toast.makeText(context, R.string.startCallForbidden, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.startCallForbidden, Snackbar.LENGTH_LONG).show()
} else { } else {
ApplicationWideCurrentRoomHolder.getInstance().isDialing = true ApplicationWideCurrentRoomHolder.getInstance().isDialing = true
val callIntent = getIntentForCall(isVoiceOnlyCall, callWithoutNotification) val callIntent = getIntentForCall(isVoiceOnlyCall, callWithoutNotification)
@ -3725,7 +3736,7 @@ class ChatActivity :
"Deletion of message is skipped because of restrictions by permissions. " + "Deletion of message is skipped because of restrictions by permissions. " +
"This method should not have been called!" "This method should not have been called!"
) )
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} else { } else {
var apiVersion = 1 var apiVersion = 1
// FIXME Fix API checking with guests? // FIXME Fix API checking with guests?
@ -3750,10 +3761,10 @@ class ChatActivity :
override fun onNext(t: ChatOverallSingleMessage) { override fun onNext(t: ChatOverallSingleMessage) {
if (t.ocs!!.meta!!.statusCode == HttpURLConnection.HTTP_ACCEPTED) { if (t.ocs!!.meta!!.statusCode == HttpURLConnection.HTTP_ACCEPTED) {
Toast.makeText( Snackbar.make(
context, binding.root,
R.string.nc_delete_message_leaked_to_matterbridge, R.string.nc_delete_message_leaked_to_matterbridge,
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} }
} }
@ -3765,7 +3776,7 @@ class ChatActivity :
message?.id, message?.id,
e e
) )
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
override fun onComplete() { override fun onComplete() {
@ -4125,7 +4136,7 @@ class ChatActivity :
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
Log.e(TAG, "error after clicking on user mention chip", e) Log.e(TAG, "error after clicking on user mention chip", e)
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
override fun onComplete() { override fun onComplete() {
@ -4159,7 +4170,7 @@ class ChatActivity :
) )
File("$outputDir/$videoName$VIDEO_SUFFIX") File("$outputDir/$videoName$VIDEO_SUFFIX")
} catch (e: IOException) { } catch (e: IOException) {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
Log.e(TAG, "error while creating video file", e) Log.e(TAG, "error while creating video file", e)
null null
} }

View File

@ -29,7 +29,6 @@ import android.os.Handler
import android.text.TextUtils import android.text.TextUtils
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.widget.Toast
import androidx.work.Data import androidx.work.Data
import androidx.work.OneTimeWorkRequest import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager import androidx.work.WorkManager
@ -37,6 +36,7 @@ import autodagger.AutoInjector
import com.bluelinelabs.conductor.RouterTransaction import com.bluelinelabs.conductor.RouterTransaction
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler
import com.bluelinelabs.logansquare.LoganSquare import com.bluelinelabs.logansquare.LoganSquare
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
@ -474,7 +474,7 @@ class AccountVerificationController(args: Bundle? = null) : BaseController(
} }
} else { } else {
Log.e(TAG, "failed to set active user") Log.e(TAG, "failed to set active user")
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding!!.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
} }
} }

View File

@ -39,7 +39,6 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.View.GONE import android.view.View.GONE
import android.view.View.VISIBLE import android.view.View.VISIBLE
import android.widget.Toast
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.work.Data import androidx.work.Data
import androidx.work.OneTimeWorkRequest import androidx.work.OneTimeWorkRequest
@ -50,6 +49,7 @@ import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.bottomsheets.BottomSheet import com.afollestad.materialdialogs.bottomsheets.BottomSheet
import com.afollestad.materialdialogs.datetime.dateTimePicker import com.afollestad.materialdialogs.datetime.dateTimePicker
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.android.common.ui.theme.utils.ColorRole
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.activities.BaseActivity
@ -594,12 +594,12 @@ class ConversationInfoActivity :
} }
override fun onNext(genericOverall: GenericOverall) { override fun onNext(genericOverall: GenericOverall) {
Toast.makeText(context, context.getString(R.string.nc_clear_history_success), Toast.LENGTH_LONG) Snackbar.make(binding.root, context.getString(R.string.nc_clear_history_success), Snackbar.LENGTH_LONG)
.show() .show()
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
Log.e(TAG, "failed to clear chat history", e) Log.e(TAG, "failed to clear chat history", e)
} }

View File

@ -4,9 +4,9 @@ import android.content.Intent
import android.util.Log import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ActivityConversationInfoBinding import com.nextcloud.talk.databinding.ActivityConversationInfoBinding
@ -145,13 +145,13 @@ class GuestAccessHelper(
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
val message = context.getString(R.string.nc_guest_access_resend_invitations_failed) val message = context.getString(R.string.nc_guest_access_resend_invitations_failed)
Toast.makeText(context, message, Toast.LENGTH_SHORT).show() Snackbar.make(binding.root, message, Snackbar.LENGTH_SHORT).show()
Log.e(TAG, message, e) Log.e(TAG, message, e)
} }
override fun onComplete() { override fun onComplete() {
if (resendInvitationsResult.successful) { if (resendInvitationsResult.successful) {
Toast.makeText(context, R.string.nc_guest_access_resend_invitations_successful, Toast.LENGTH_SHORT) Snackbar.make(binding.root, R.string.nc_guest_access_resend_invitations_successful, Snackbar.LENGTH_SHORT)
.show() .show()
} }
} }
@ -167,7 +167,7 @@ class GuestAccessHelper(
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
val message = context.getString(R.string.nc_guest_access_allow_failed) val message = context.getString(R.string.nc_guest_access_allow_failed)
Toast.makeText(context, message, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, message, Snackbar.LENGTH_LONG).show()
Log.e(TAG, message, e) Log.e(TAG, message, e)
} }
@ -210,7 +210,7 @@ class GuestAccessHelper(
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
val message = context.getString(R.string.nc_guest_access_password_failed) val message = context.getString(R.string.nc_guest_access_password_failed)
Toast.makeText(context, message, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, message, Snackbar.LENGTH_LONG).show()
Log.e(TAG, message, e) Log.e(TAG, message, e)
} }

View File

@ -31,12 +31,12 @@ import android.util.Log
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.widget.Toast
import androidx.core.net.toFile import androidx.core.net.toFile
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import autodagger.AutoInjector import autodagger.AutoInjector
import com.github.dhaval2404.imagepicker.ImagePicker import com.github.dhaval2404.imagepicker.ImagePicker
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApi
@ -141,7 +141,7 @@ class ConversationInfoEditActivity :
} }
is ConversationInfoEditViewModel.GetRoomErrorState -> { is ConversationInfoEditViewModel.GetRoomErrorState -> {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
is ConversationInfoEditViewModel.UploadAvatarSuccessState -> { is ConversationInfoEditViewModel.UploadAvatarSuccessState -> {
@ -150,7 +150,7 @@ class ConversationInfoEditActivity :
} }
is ConversationInfoEditViewModel.UploadAvatarErrorState -> { is ConversationInfoEditViewModel.UploadAvatarErrorState -> {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
is ConversationInfoEditViewModel.DeleteAvatarSuccessState -> { is ConversationInfoEditViewModel.DeleteAvatarSuccessState -> {
@ -159,7 +159,7 @@ class ConversationInfoEditActivity :
} }
is ConversationInfoEditViewModel.DeleteAvatarErrorState -> { is ConversationInfoEditViewModel.DeleteAvatarErrorState -> {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
else -> {} else -> {}
@ -249,10 +249,10 @@ class ConversationInfoEditActivity :
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
Toast.makeText( Snackbar.make(
applicationContext, binding.root,
context.getString(R.string.default_error_msg), context.getString(R.string.default_error_msg),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
Log.e(TAG, "Error while saving conversation name", e) Log.e(TAG, "Error while saving conversation name", e)
} }
@ -289,10 +289,10 @@ class ConversationInfoEditActivity :
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
Toast.makeText( Snackbar.make(
applicationContext, binding.root,
context.getString(R.string.default_error_msg), context.getString(R.string.default_error_msg),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
Log.e(TAG, "Error while saving conversation description", e) Log.e(TAG, "Error while saving conversation description", e)
} }
@ -315,7 +315,7 @@ class ConversationInfoEditActivity :
} }
ImagePicker.RESULT_ERROR -> { ImagePicker.RESULT_ERROR -> {
Toast.makeText(this, ImagePicker.getError(data), Toast.LENGTH_SHORT).show() Snackbar.make(binding.root, ImagePicker.getError(data), Snackbar.LENGTH_SHORT).show()
} }
else -> { else -> {

View File

@ -50,7 +50,6 @@ import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
@ -68,6 +67,7 @@ import coil.transform.CircleCropTransformation
import com.google.android.material.appbar.AppBarLayout import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButton
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.android.common.ui.theme.utils.ColorRole
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.activities.BaseActivity
@ -267,7 +267,7 @@ class ConversationsListActivity :
fetchRooms() fetchRooms()
} else { } else {
Log.e(TAG, "userManager.currentUser.blockingGet() returned null") Log.e(TAG, "userManager.currentUser.blockingGet() returned null")
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
showSearchOrToolbar() showSearchOrToolbar()
@ -309,7 +309,7 @@ class ConversationsListActivity :
) )
} else { } else {
Log.e(TAG, "currentUser was null in loadUserAvatar") Log.e(TAG, "currentUser was null in loadUserAvatar")
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
} }
@ -989,14 +989,14 @@ class ConversationsListActivity :
) { ) {
handleSharedData() handleSharedData()
} else { } else {
Toast.makeText(context, R.string.send_to_forbidden, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.send_to_forbidden, Snackbar.LENGTH_LONG).show()
} }
} else if (forwardMessage) { } else if (forwardMessage) {
if (hasChatPermission && !isReadOnlyConversation(selectedConversation!!)) { if (hasChatPermission && !isReadOnlyConversation(selectedConversation!!)) {
openConversation(intent.getStringExtra(KEY_FORWARD_MSG_TEXT)) openConversation(intent.getStringExtra(KEY_FORWARD_MSG_TEXT))
forwardMessage = false forwardMessage = false
} else { } else {
Toast.makeText(context, R.string.send_to_forbidden, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.send_to_forbidden, Snackbar.LENGTH_LONG).show()
} }
} else { } else {
openConversation() openConversation()
@ -1023,8 +1023,8 @@ class ConversationsListActivity :
} else if (filesToShare != null && filesToShare!!.isNotEmpty()) { } else if (filesToShare != null && filesToShare!!.isNotEmpty()) {
showSendFilesConfirmDialog() showSendFilesConfirmDialog()
} else { } else {
Toast Snackbar
.makeText(context, context.resources.getString(R.string.nc_common_error_sorry), Toast.LENGTH_LONG) .make(binding.root, context.resources.getString(R.string.nc_common_error_sorry), Snackbar.LENGTH_LONG)
.show() .show()
} }
} }
@ -1125,18 +1125,18 @@ class ConversationsListActivity :
} }
} }
if (filesToShare!!.isEmpty() && textToPaste!!.isEmpty()) { if (filesToShare!!.isEmpty() && textToPaste!!.isEmpty()) {
Toast.makeText( Snackbar.make(
context, binding.root,
context.resources.getString(R.string.nc_common_error_sorry), context.resources.getString(R.string.nc_common_error_sorry),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
Log.e(TAG, "failed to get data from intent") Log.e(TAG, "failed to get data from intent")
} }
} catch (e: Exception) { } catch (e: Exception) {
Toast.makeText( Snackbar.make(
context, binding.root,
context.resources.getString(R.string.nc_common_error_sorry), context.resources.getString(R.string.nc_common_error_sorry),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
Log.e(TAG, "Something went wrong when extracting data from intent") Log.e(TAG, "Something went wrong when extracting data from intent")
} }
@ -1146,10 +1146,10 @@ class ConversationsListActivity :
private fun upload() { private fun upload() {
if (selectedConversation == null) { if (selectedConversation == null) {
Toast.makeText( Snackbar.make(
context, binding.root,
context.resources.getString(R.string.nc_common_error_sorry), context.resources.getString(R.string.nc_common_error_sorry),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
Log.e(TAG, "not able to upload any files because conversation was null.") Log.e(TAG, "not able to upload any files because conversation was null.")
return return
@ -1164,7 +1164,8 @@ class ConversationsListActivity :
) )
} }
} catch (e: IllegalArgumentException) { } catch (e: IllegalArgumentException) {
Toast.makeText(context, context.resources.getString(R.string.nc_upload_failed), Toast.LENGTH_LONG).show() Snackbar.make(binding.root, context.resources.getString(R.string.nc_upload_failed), Snackbar.LENGTH_LONG)
.show()
Log.e(TAG, "Something went wrong when trying to upload file", e) Log.e(TAG, "Something went wrong when trying to upload file", e)
} }
} }
@ -1178,7 +1179,8 @@ class ConversationsListActivity :
Log.d(TAG, "upload starting after permissions were granted") Log.d(TAG, "upload starting after permissions were granted")
showSendFilesConfirmDialog() showSendFilesConfirmDialog()
} else { } else {
Toast.makeText(context, context.getString(R.string.read_storage_no_permission), Toast.LENGTH_LONG).show() Snackbar.make(binding.root, context.getString(R.string.read_storage_no_permission), Snackbar.LENGTH_LONG)
.show()
} }
} }
@ -1186,10 +1188,10 @@ class ConversationsListActivity :
if (CallActivity.active && if (CallActivity.active &&
selectedConversation!!.token != ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken selectedConversation!!.token != ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken
) { ) {
Toast.makeText( Snackbar.make(
context, binding.root,
context.getString(R.string.restrict_join_other_room_while_call), context.getString(R.string.restrict_join_other_room_while_call),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
return return
} }

View File

@ -23,10 +23,12 @@
*/ */
package com.nextcloud.talk.jobs package com.nextcloud.talk.jobs
import android.Manifest
import android.app.Notification import android.app.Notification
import android.app.PendingIntent import android.app.PendingIntent
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap import android.graphics.Bitmap
import android.media.AudioAttributes import android.media.AudioAttributes
import android.media.MediaPlayer import android.media.MediaPlayer
@ -40,7 +42,8 @@ import android.service.notification.StatusBarNotification
import android.text.TextUtils import android.text.TextUtils
import android.util.Base64 import android.util.Base64
import android.util.Log import android.util.Log
import android.widget.Toast import android.view.View
import androidx.core.app.ActivityCompat
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat import androidx.core.app.NotificationManagerCompat
import androidx.core.app.Person import androidx.core.app.Person
@ -53,6 +56,7 @@ import androidx.work.Worker
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import autodagger.AutoInjector import autodagger.AutoInjector
import com.bluelinelabs.logansquare.LoganSquare import com.bluelinelabs.logansquare.LoganSquare
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.BuildConfig import com.nextcloud.talk.BuildConfig
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.MainActivity import com.nextcloud.talk.activities.MainActivity
@ -325,7 +329,8 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
Log.e(TAG, "Failed to get NC notification", e) Log.e(TAG, "Failed to get NC notification", e)
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
Handler(Looper.getMainLooper()).post { Handler(Looper.getMainLooper()).post {
Toast.makeText(context, "Failed to get NC notification", Toast.LENGTH_LONG).show() Snackbar.make(View(applicationContext), "Failed to get NC notification", Snackbar
.LENGTH_LONG).show()
} }
} }
} }
@ -734,6 +739,20 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
private fun sendNotification(notificationId: Int, notification: Notification) { private fun sendNotification(notificationId: Int, notification: Notification) {
Log.d(TAG, "show notification with id $notificationId") Log.d(TAG, "show notification with id $notificationId")
if (ActivityCompat.checkSelfPermission(
applicationContext,
Manifest.permission.POST_NOTIFICATIONS
) != PackageManager.PERMISSION_GRANTED
) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return
}
notificationManager.notify(notificationId, notification) notificationManager.notify(notificationId, notification)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@ -902,6 +921,20 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
.build() .build()
val notificationId: Int = SystemClock.uptimeMillis().toInt() val notificationId: Int = SystemClock.uptimeMillis().toInt()
if (ActivityCompat.checkSelfPermission(
applicationContext,
Manifest.permission.POST_NOTIFICATIONS
) != PackageManager.PERMISSION_GRANTED
) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return
}
notificationManager.notify(notificationId, notification) notificationManager.notify(notificationId, notification)
Log.d(TAG, "'you missed a call' notification was created") Log.d(TAG, "'you missed a call' notification was created")
} }

View File

@ -32,11 +32,11 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.widget.AdapterView import android.widget.AdapterView
import android.widget.Toast
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.core.view.MenuItemCompat import androidx.core.view.MenuItemCompat
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import autodagger.AutoInjector import autodagger.AutoInjector
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.adapters.GeocodingAdapter import com.nextcloud.talk.adapters.GeocodingAdapter
@ -216,7 +216,7 @@ class GeocodingActivity :
} }
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "Failed to get geocoded addresses", e) Log.e(TAG, "Failed to get geocoded addresses", e)
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
updateResultsOnMainThread(results) updateResultsOnMainThread(results)
} }

View File

@ -40,7 +40,6 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.core.content.PermissionChecker import androidx.core.content.PermissionChecker
@ -48,6 +47,7 @@ import androidx.core.content.res.ResourcesCompat
import androidx.core.view.MenuItemCompat import androidx.core.view.MenuItemCompat
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import autodagger.AutoInjector import autodagger.AutoInjector
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApi
@ -319,7 +319,7 @@ class LocationPickerActivity :
binding.centerMapButton.setOnClickListener { binding.centerMapButton.setOnClickListener {
if (myLocation.latitude == COORDINATE_ZERO && myLocation.longitude == COORDINATE_ZERO) { if (myLocation.latitude == COORDINATE_ZERO && myLocation.longitude == COORDINATE_ZERO) {
Toast.makeText(context, context.getString(R.string.nc_location_unknown), Toast.LENGTH_LONG).show() Snackbar.make(binding.root, context.getString(R.string.nc_location_unknown), Snackbar.LENGTH_LONG).show()
} else { } else {
mapController.animateTo(myLocation) mapController.animateTo(myLocation)
moveToCurrentLocation = true moveToCurrentLocation = true
@ -393,16 +393,16 @@ class LocationPickerActivity :
" and there is no alternative like UnifiedNlp installed. Furthermore no GPS is " + " and there is no alternative like UnifiedNlp installed. Furthermore no GPS is " +
"supported." "supported."
) )
Toast.makeText(context, context.getString(R.string.nc_location_unknown), Toast.LENGTH_LONG) Snackbar.make(binding.root, context.getString(R.string.nc_location_unknown), Snackbar.LENGTH_LONG)
.show() .show()
} }
} }
} catch (e: SecurityException) { } catch (e: SecurityException) {
Log.e(TAG, "Error when requesting location updates. Permissions may be missing.", e) Log.e(TAG, "Error when requesting location updates. Permissions may be missing.", e)
Toast.makeText(context, context.getString(R.string.nc_location_unknown), Toast.LENGTH_LONG).show() Snackbar.make(binding.root, context.getString(R.string.nc_location_unknown), Snackbar.LENGTH_LONG).show()
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "Error when requesting location updates.", e) Log.e(TAG, "Error when requesting location updates.", e)
Toast.makeText(context, context.getString(R.string.nc_common_error_sorry), Toast.LENGTH_LONG).show() Snackbar.make(binding.root, context.getString(R.string.nc_common_error_sorry), Snackbar.LENGTH_LONG).show()
} }
} }
@ -476,7 +476,7 @@ class LocationPickerActivity :
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
Log.e(TAG, "error when trying to share location", e) Log.e(TAG, "error when trying to share location", e)
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
finish() finish()
} }
@ -531,7 +531,7 @@ class LocationPickerActivity :
if (requestCode == REQUEST_PERMISSIONS_REQUEST_CODE && areAllGranted(grantResults)) { if (requestCode == REQUEST_PERMISSIONS_REQUEST_CODE && areAllGranted(grantResults)) {
initMap() initMap()
} else { } else {
Toast.makeText(context, context!!.getString(R.string.nc_location_permission_required), Toast.LENGTH_LONG) Snackbar.make(binding.root, context!!.getString(R.string.nc_location_permission_required), Snackbar.LENGTH_LONG)
.show() .show()
} }
} }
@ -556,7 +556,7 @@ class LocationPickerActivity :
address = nominatimClient!!.getAddress(lon, lat) address = nominatimClient!!.getAddress(lon, lat)
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "Failed to get geocoded addresses", e) Log.e(TAG, "Failed to get geocoded addresses", e)
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
updateResultOnMainThread(lat, lon, address?.displayName) updateResultOnMainThread(lat, lon, address?.displayName)
} }

View File

@ -30,11 +30,11 @@ import android.text.TextUtils
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import autodagger.AutoInjector import autodagger.AutoInjector
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.adapters.items.LoadMoreResultsItem import com.nextcloud.talk.adapters.items.LoadMoreResultsItem
@ -127,7 +127,7 @@ class MessageSearchActivity : BaseActivity() {
private fun showError() { private fun showError() {
displayLoading(false) displayLoading(false)
Toast.makeText(this, "Error while searching", Toast.LENGTH_SHORT).show() Snackbar.make(binding.root, "Error while searching", Snackbar.LENGTH_SHORT).show()
} }
private fun showLoading() { private fun showLoading() {

View File

@ -24,9 +24,9 @@ import android.content.Intent
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.Toast
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import autodagger.AutoInjector import autodagger.AutoInjector
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApi
@ -112,7 +112,7 @@ class ListOpenConversationsActivity : BaseActivity() {
binding.emptyList.emptyListViewText.visibility = View.VISIBLE binding.emptyList.emptyListViewText.visibility = View.VISIBLE
} }
is OpenConversationsViewModel.FetchConversationsErrorState -> { is OpenConversationsViewModel.FetchConversationsErrorState -> {
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
else -> {} else -> {}
} }

View File

@ -30,12 +30,12 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.EditText import android.widget.EditText
import android.widget.Toast
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import autodagger.AutoInjector import autodagger.AutoInjector
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.databinding.DialogPollCreateBinding import com.nextcloud.talk.databinding.DialogPollCreateBinding
@ -172,7 +172,7 @@ class PollCreateDialogFragment : DialogFragment(), PollCreateOptionsItemListener
private fun showError() { private fun showError() {
dismiss() dismiss()
Log.e(TAG, "Failed to create poll") Log.e(TAG, "Failed to create poll")
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
override fun onRemoveOptionsItemClick(pollCreateOptionItem: PollCreateOptionItem, position: Int) { override fun onRemoveOptionsItemClick(pollCreateOptionItem: PollCreateOptionItem, position: Int) {

View File

@ -32,12 +32,12 @@ import android.widget.CheckBox
import android.widget.CompoundButton import android.widget.CompoundButton
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.RadioButton import android.widget.RadioButton
import android.widget.Toast
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import autodagger.AutoInjector import autodagger.AutoInjector
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.databinding.DialogPollVoteBinding import com.nextcloud.talk.databinding.DialogPollVoteBinding
@ -94,10 +94,10 @@ class PollVoteFragment : Fragment() {
PollVoteViewModel.InitialState -> {} PollVoteViewModel.InitialState -> {}
is PollVoteViewModel.PollVoteFailedState -> { is PollVoteViewModel.PollVoteFailedState -> {
Log.e(TAG, "Failed to vote on poll.") Log.e(TAG, "Failed to vote on poll.")
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
is PollVoteViewModel.PollVoteHiddenSuccessState -> { is PollVoteViewModel.PollVoteHiddenSuccessState -> {
Toast.makeText(context, R.string.polls_voted_hidden_success, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.polls_voted_hidden_success, Snackbar.LENGTH_LONG).show()
parentViewModel.dismissDialog() parentViewModel.dismissDialog()
} }
is PollVoteViewModel.PollVoteSuccessState -> { is PollVoteViewModel.PollVoteSuccessState -> {
@ -182,7 +182,7 @@ class PollVoteFragment : Fragment() {
viewModel.selectOption(index, false) viewModel.selectOption(index, false)
} else { } else {
checkBox.isChecked = false checkBox.isChecked = false
Toast.makeText(context, R.string.polls_max_votes_reached, Toast.LENGTH_LONG).show() Snackbar.make(binding.root, R.string.polls_max_votes_reached, Snackbar.LENGTH_LONG).show()
} }
} else { } else {
viewModel.deSelectOption(index) viewModel.deSelectOption(index)

View File

@ -40,7 +40,6 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.net.toFile import androidx.core.net.toFile
@ -49,6 +48,7 @@ import androidx.recyclerview.widget.RecyclerView
import autodagger.AutoInjector import autodagger.AutoInjector
import com.github.dhaval2404.imagepicker.ImagePicker import com.github.dhaval2404.imagepicker.ImagePicker
import com.github.dhaval2404.imagepicker.ImagePicker.Companion.getError import com.github.dhaval2404.imagepicker.ImagePicker.Companion.getError
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.android.common.ui.theme.utils.ColorRole
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.activities.BaseActivity
@ -459,13 +459,13 @@ class ProfileActivity : BaseActivity() {
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
item.text = userInfo?.getValueByField(item.field) item.text = userInfo?.getValueByField(item.field)
Toast.makeText( Snackbar.make(
applicationContext, binding.root,
String.format( String.format(
resources!!.getString(R.string.failed_to_save), resources!!.getString(R.string.failed_to_save),
item.field item.field
), ),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
adapter!!.updateFilteredList() adapter!!.updateFilteredList()
adapter!!.notifyDataSetChanged() adapter!!.notifyDataSetChanged()
@ -492,8 +492,8 @@ class ProfileActivity : BaseActivity() {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
pickImage.takePicture() pickImage.takePicture()
} else { } else {
Toast Snackbar
.makeText(context, context.getString(R.string.take_photo_permission), Toast.LENGTH_LONG) .make(binding.root, context.getString(R.string.take_photo_permission), Snackbar.LENGTH_LONG)
.show() .show()
} }
} }
@ -510,7 +510,7 @@ class ProfileActivity : BaseActivity() {
) { uploadAvatar(it.toFile()) } ) { uploadAvatar(it.toFile()) }
} }
ImagePicker.RESULT_ERROR -> { ImagePicker.RESULT_ERROR -> {
Toast.makeText(this, getError(data), Toast.LENGTH_SHORT).show() Snackbar.make(binding.root, getError(data), Snackbar.LENGTH_SHORT).show()
} }
else -> { else -> {
Log.i(TAG, "Task Cancelled") Log.i(TAG, "Task Cancelled")
@ -550,10 +550,10 @@ class ProfileActivity : BaseActivity() {
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
Toast.makeText( Snackbar.make(
applicationContext, binding.root,
context.getString(R.string.default_error_msg), context.getString(R.string.default_error_msg),
Toast Snackbar
.LENGTH_LONG .LENGTH_LONG
).show() ).show()
Log.e(TAG, "Error uploading avatar", e) Log.e(TAG, "Error uploading avatar", e)

View File

@ -25,8 +25,9 @@ import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.util.Log import android.util.Log
import android.widget.Toast import android.view.View
import autodagger.AutoInjector import autodagger.AutoInjector
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
@ -91,12 +92,12 @@ class ShareRecordingToChatReceiver : BroadcastReceiver() {
// combined with addNextIntentWithParentStack. For further reading, see // combined with addNextIntentWithParentStack. For further reading, see
// https://developer.android.com/develop/ui/views/notifications/navigation#DirectEntry // https://developer.android.com/develop/ui/views/notifications/navigation#DirectEntry
// As we are using the conductor framework it might be hard the combine this or to keep an overview. // As we are using the conductor framework it might be hard the combine this or to keep an overview.
// For this reason there is only a toast for now until we got rid of conductor. // For this reason there is only a Snackbar for now until we got rid of conductor.
Toast.makeText( Snackbar.make(
context, View(context),
context.resources.getString(R.string.nc_all_ok_operation), context.resources.getString(R.string.nc_all_ok_operation),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} }

View File

@ -52,7 +52,6 @@ import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.widget.EditText import android.widget.EditText
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.Toast
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.view.ContextThemeWrapper import androidx.appcompat.view.ContextThemeWrapper
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
@ -63,6 +62,7 @@ import androidx.work.WorkManager
import autodagger.AutoInjector import autodagger.AutoInjector
import com.afollestad.materialdialogs.utils.MDUtil.getStringArray import com.afollestad.materialdialogs.utils.MDUtil.getStringArray
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.textfield.TextInputLayout import com.google.android.material.textfield.TextInputLayout
import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.android.common.ui.theme.utils.ColorRole
import com.nextcloud.talk.BuildConfig import com.nextcloud.talk.BuildConfig
@ -888,10 +888,10 @@ class SettingsActivity : BaseActivity() {
} else { } else {
appPreferences.setPhoneBookIntegration(false) appPreferences.setPhoneBookIntegration(false)
binding.settingsPhoneBookIntegrationSwitch.isChecked = appPreferences.isPhoneBookIntegrationEnabled binding.settingsPhoneBookIntegrationSwitch.isChecked = appPreferences.isPhoneBookIntegrationEnabled
Toast.makeText( Snackbar.make(
context, binding.root,
context.resources.getString(R.string.no_phone_book_integration_due_to_permissions), context.resources.getString(R.string.no_phone_book_integration_due_to_permissions),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} }
} }
@ -1082,12 +1082,12 @@ class SettingsActivity : BaseActivity() {
val statusCode = genericOverall.ocs?.meta?.statusCode val statusCode = genericOverall.ocs?.meta?.statusCode
if (statusCode == HTTP_CODE) { if (statusCode == HTTP_CODE) {
dialog.dismiss() dialog.dismiss()
Toast.makeText( Snackbar.make(
context, binding.root,
context.resources.getString( context.resources.getString(
R.string.nc_settings_phone_book_integration_phone_number_dialog_success R.string.nc_settings_phone_book_integration_phone_number_dialog_success
), ),
Toast.LENGTH_LONG Snackbar.LENGTH_LONG
).show() ).show()
} else { } else {
textInputLayout.helperText = context.resources.getString( textInputLayout.helperText = context.resources.getString(

View File

@ -29,13 +29,13 @@ import android.util.Log
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import android.widget.ProgressBar import android.widget.ProgressBar
import android.widget.Toast
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import androidx.emoji2.widget.EmojiTextView import androidx.emoji2.widget.EmojiTextView
import androidx.work.Data import androidx.work.Data
import androidx.work.OneTimeWorkRequest import androidx.work.OneTimeWorkRequest
import androidx.work.WorkInfo import androidx.work.WorkInfo
import androidx.work.WorkManager import androidx.work.WorkManager
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.FullScreenImageActivity import com.nextcloud.talk.activities.FullScreenImageActivity
import com.nextcloud.talk.activities.FullScreenMediaActivity import com.nextcloud.talk.activities.FullScreenMediaActivity
@ -122,7 +122,7 @@ class FileViewerUtils(private val context: Context, private val user: User) {
"support it, it can't be handled by an external app and there is no link " + "support it, it can't be handled by an external app and there is no link " +
"to open it in the nextcloud files app" "to open it in the nextcloud files app"
) )
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(View(context), R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
} }
@ -175,7 +175,7 @@ class FileViewerUtils(private val context: Context, private val user: User) {
} }
} else { } else {
Log.e(TAG, "can't open file with unknown mimetype") Log.e(TAG, "can't open file with unknown mimetype")
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() Snackbar.make(View(context), R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
} }
} }