mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 11:39:42 +01:00
Replaced all the Toasts with Snackbar
This commit is contained in:
parent
d4cae4333b
commit
a447196257
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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 -> {}
|
||||||
|
@ -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 {
|
||||||
|
Snackbar.make(binding.root, 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)
|
||||||
} 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 {
|
||||||
|
Snackbar.make(binding.root, 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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 -> {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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")
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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() {
|
||||||
|
@ -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 -> {}
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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(
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user