Commit cfcc5b3f authored by Divyanshu Bhargava's avatar Divyanshu Bhargava

Check and Request camera permission

parent e73f28fd
...@@ -5,6 +5,7 @@ import android.content.ClipData ...@@ -5,6 +5,7 @@ import android.content.ClipData
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
...@@ -60,10 +61,8 @@ import chat.rocket.android.emoji.EmojiParser ...@@ -60,10 +61,8 @@ import chat.rocket.android.emoji.EmojiParser
import chat.rocket.android.emoji.EmojiPickerPopup import chat.rocket.android.emoji.EmojiPickerPopup
import chat.rocket.android.emoji.EmojiReactionListener import chat.rocket.android.emoji.EmojiReactionListener
import chat.rocket.android.emoji.internal.isCustom import chat.rocket.android.emoji.internal.isCustom
import chat.rocket.android.helper.EndlessRecyclerViewScrollListener import chat.rocket.android.helper.*
import chat.rocket.android.helper.ImageHelper import chat.rocket.android.helper.AndroidPermissionsHelper.CAMERA_CODE
import chat.rocket.android.helper.KeyboardHelper
import chat.rocket.android.helper.MessageParser
import chat.rocket.android.util.extension.asObservable import chat.rocket.android.util.extension.asObservable
import chat.rocket.android.util.extension.createImageFile import chat.rocket.android.util.extension.createImageFile
import chat.rocket.android.util.extensions.circularRevealOrUnreveal import chat.rocket.android.util.extensions.circularRevealOrUnreveal
...@@ -81,6 +80,7 @@ import chat.rocket.common.model.RoomType ...@@ -81,6 +80,7 @@ import chat.rocket.common.model.RoomType
import chat.rocket.common.model.roomTypeOf import chat.rocket.common.model.roomTypeOf
import chat.rocket.core.internal.realtime.socket.model.State import chat.rocket.core.internal.realtime.socket.model.State
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.google.android.material.snackbar.Snackbar
import dagger.android.support.AndroidSupportInjection import dagger.android.support.AndroidSupportInjection
import io.reactivex.Observable import io.reactivex.Observable
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
...@@ -903,8 +903,14 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR ...@@ -903,8 +903,14 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
button_add_reaction_or_show_keyboard.setOnClickListener { toggleKeyboard() } button_add_reaction_or_show_keyboard.setOnClickListener { toggleKeyboard() }
button_take_a_photo.setOnClickListener { button_take_a_photo.setOnClickListener {
dispatchTakePictureIntent() // Check for camera permission
context?.let {
if(hasCameraPermission(it)) {
dispatchTakePictureIntent()
} else {
getCameraPermission()
}
}
handler.postDelayed({ handler.postDelayed({
hideAttachmentOptions() hideAttachmentOptions()
}, 400) }, 400)
...@@ -957,6 +963,33 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR ...@@ -957,6 +963,33 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
} }
} }
private fun hasCameraPermission(context: Context): Boolean {
return AndroidPermissionsHelper.checkPermission(context, android.Manifest.permission.CAMERA)
}
private fun getCameraPermission() {
requestPermissions(
arrayOf(android.Manifest.permission.CAMERA),
AndroidPermissionsHelper.CAMERA_CODE
)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
when(requestCode) {
CAMERA_CODE -> {
if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
// permission was granted
dispatchTakePictureIntent()
} else {
// permission denied
Snackbar.make(root_layout, R.string.msg_camera_permission_denied, Snackbar.LENGTH_SHORT).show()
}
return
}
}
}
private fun getDraftMessage() { private fun getDraftMessage() {
val unfinishedMessage = presenter.getDraftUnfinishedMessage() val unfinishedMessage = presenter.getDraftUnfinishedMessage()
if (unfinishedMessage.isNotNullNorEmpty()) { if (unfinishedMessage.isNotNullNorEmpty()) {
......
...@@ -9,6 +9,7 @@ import androidx.core.content.ContextCompat ...@@ -9,6 +9,7 @@ import androidx.core.content.ContextCompat
object AndroidPermissionsHelper { object AndroidPermissionsHelper {
const val WRITE_EXTERNAL_STORAGE_CODE = 1 const val WRITE_EXTERNAL_STORAGE_CODE = 1
const val CAMERA_CODE = 2
fun checkPermission(context: Context, permission: String): Boolean { fun checkPermission(context: Context, permission: String): Boolean {
return ContextCompat.checkSelfPermission( return ContextCompat.checkSelfPermission(
......
...@@ -182,6 +182,8 @@ ...@@ -182,6 +182,8 @@
<item quantity="two">%1$s reacted with %2$s</item> <item quantity="two">%1$s reacted with %2$s</item>
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">Credentials saved successfully</string> <!-- TODO Translate --> <string name="msg_credentials_saved_successfully">Credentials saved successfully</string> <!-- TODO Translate -->
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">خاص</string> <string name="msg_private_channel">خاص</string>
......
...@@ -178,7 +178,7 @@ ...@@ -178,7 +178,7 @@
<item quantity="other">%1$s reagierte mit %2$s</item> <item quantity="other">%1$s reagierte mit %2$s</item>
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">Login-Daten erfolgreich gespeichert</string> <string name="msg_credentials_saved_successfully">Login-Daten erfolgreich gespeichert</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">Privat</string> <string name="msg_private_channel">Privat</string>
......
...@@ -190,6 +190,7 @@ ...@@ -190,6 +190,7 @@
<item quantity="other">%1$s reacted with %2$s</item> <!-- TODO - Add proper translation --> <item quantity="other">%1$s reacted with %2$s</item> <!-- TODO - Add proper translation -->
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">Credenciales guardadas con éxito</string> <string name="msg_credentials_saved_successfully">Credenciales guardadas con éxito</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Preferences messages --> <!-- Preferences messages -->
<string name="msg_analytics_tracking">Analytics tracking</string> <!-- TODO Add translation --> <string name="msg_analytics_tracking">Analytics tracking</string> <!-- TODO Add translation -->
......
...@@ -177,6 +177,7 @@ ...@@ -177,6 +177,7 @@
<item quantity="other">%1$s reacted with %2$s</item> <item quantity="other">%1$s reacted with %2$s</item>
</plurals> <!-- TODO Add translation --> </plurals> <!-- TODO Add translation -->
<string name="msg_credentials_saved_successfully">اختیارها با موفقیت ذخیره شد</string> <string name="msg_credentials_saved_successfully">اختیارها با موفقیت ذخیره شد</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">خصوصی</string> <string name="msg_private_channel">خصوصی</string>
......
...@@ -181,6 +181,7 @@ ...@@ -181,6 +181,7 @@
<item quantity="other">%1$s a réagi avec %2$s</item> <item quantity="other">%1$s a réagi avec %2$s</item>
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">Certificats sauvegardés</string> <string name="msg_credentials_saved_successfully">Certificats sauvegardés</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">Privé</string> <string name="msg_private_channel">Privé</string>
......
...@@ -167,6 +167,7 @@ ...@@ -167,6 +167,7 @@
<string name="msg_continue_with_wordpress"><b>WordPress</b> के साथ जारी रखें</string> <string name="msg_continue_with_wordpress"><b>WordPress</b> के साथ जारी रखें</string>
<string name="msg_two_factor_authentication">दो तरीकों से प्रमाणीकरण</string> <string name="msg_two_factor_authentication">दो तरीकों से प्रमाणीकरण</string>
<string name="msg__your_2fa_code">आपका 2FA कोड क्या है?</string> <string name="msg__your_2fa_code">आपका 2FA कोड क्या है?</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">प्राइवेट</string> <string name="msg_private_channel">प्राइवेट</string>
......
...@@ -174,6 +174,7 @@ ...@@ -174,6 +174,7 @@
<item quantity="other">%1$s ha reagito con %2$s</item> <item quantity="other">%1$s ha reagito con %2$s</item>
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">Credenziali salvate con successo</string> <string name="msg_credentials_saved_successfully">Credenziali salvate con successo</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">Privato</string> <string name="msg_private_channel">Privato</string>
......
...@@ -177,6 +177,7 @@ ...@@ -177,6 +177,7 @@
<item quantity="other">%1$s reacted with %2$s</item> <!-- TODO - Add proper translation --> <item quantity="other">%1$s reacted with %2$s</item> <!-- TODO - Add proper translation -->
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">資格情報を正常に保存しました</string> <string name="msg_credentials_saved_successfully">資格情報を正常に保存しました</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">プライベート</string> <string name="msg_private_channel">プライベート</string>
......
...@@ -183,6 +183,7 @@ ...@@ -183,6 +183,7 @@
<item quantity="other">%1$s reagiram com %2$s</item> <item quantity="other">%1$s reagiram com %2$s</item>
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">Credenciais salvas com sucesso</string> <string name="msg_credentials_saved_successfully">Credenciais salvas com sucesso</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">Privado</string> <string name="msg_private_channel">Privado</string>
......
...@@ -173,6 +173,7 @@ ...@@ -173,6 +173,7 @@
<item quantity="one">%1$s reagiu com %2$s</item> <item quantity="one">%1$s reagiu com %2$s</item>
<item quantity="other">%1$s reagiram com %2$s</item> <item quantity="other">%1$s reagiram com %2$s</item>
</plurals> </plurals>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">Privado</string> <string name="msg_private_channel">Privado</string>
......
...@@ -180,6 +180,7 @@ ...@@ -180,6 +180,7 @@
<item quantity="many">%1$s реагируют с %2$s</item> <item quantity="many">%1$s реагируют с %2$s</item>
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">Учетные данные успешно сохранены</string> <string name="msg_credentials_saved_successfully">Учетные данные успешно сохранены</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">Приватный</string> <string name="msg_private_channel">Приватный</string>
......
...@@ -164,6 +164,7 @@ ...@@ -164,6 +164,7 @@
<string name="msg_continue_with_wordpress">Continue with <b>WordPress</b></string> <!-- TODO Add translation --> <string name="msg_continue_with_wordpress">Continue with <b>WordPress</b></string> <!-- TODO Add translation -->
<string name="msg_two_factor_authentication">Two-factor Authentication</string> <!-- TODO Add translation --> <string name="msg_two_factor_authentication">Two-factor Authentication</string> <!-- TODO Add translation -->
<string name="msg__your_2fa_code">What’s your 2FA code?</string> <!-- TODO Add translation --> <string name="msg__your_2fa_code">What’s your 2FA code?</string> <!-- TODO Add translation -->
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">Özel</string> <string name="msg_private_channel">Özel</string>
......
...@@ -179,6 +179,7 @@ ...@@ -179,6 +179,7 @@
<item quantity="many">%1$s reacted with %2$s</item> <!-- TODO - Add proper translation --> <item quantity="many">%1$s reacted with %2$s</item> <!-- TODO - Add proper translation -->
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">Облікові дані було успішно збережено</string> <string name="msg_credentials_saved_successfully">Облікові дані було успішно збережено</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">Приватний</string> <string name="msg_private_channel">Приватний</string>
......
...@@ -174,6 +174,7 @@ ...@@ -174,6 +174,7 @@
<item quantity="other">%1$s 使用了 %2$s</item> <item quantity="other">%1$s 使用了 %2$s</item>
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">凭证成功保存</string> <string name="msg_credentials_saved_successfully">凭证成功保存</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">隐私</string> <string name="msg_private_channel">隐私</string>
......
...@@ -174,6 +174,7 @@ ...@@ -174,6 +174,7 @@
<item quantity="other">%1$s 使用了 %2$s</item> <item quantity="other">%1$s 使用了 %2$s</item>
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">憑證保存成功</string> <string name="msg_credentials_saved_successfully">憑證保存成功</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string> <!-- TODO Add translation -->
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">隱私</string> <string name="msg_private_channel">隱私</string>
......
...@@ -190,6 +190,7 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin ...@@ -190,6 +190,7 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<item quantity="other">%1$s reacted with %2$s</item> <item quantity="other">%1$s reacted with %2$s</item>
</plurals> </plurals>
<string name="msg_credentials_saved_successfully">Credentials saved successfully</string> <string name="msg_credentials_saved_successfully">Credentials saved successfully</string>
<string name="msg_camera_permission_denied">Camera permission is needed to open camera.</string>
<!-- Create channel messages --> <!-- Create channel messages -->
<string name="msg_private_channel">Private</string> <string name="msg_private_channel">Private</string>
......
...@@ -56,7 +56,7 @@ ext { ...@@ -56,7 +56,7 @@ ext {
glide : '4.8.0', glide : '4.8.0',
glideTransformations : '4.0.0', glideTransformations : '4.0.0',
jitsi : '+', // TODO Avoid using + (https://github.com/jitsi/jitsi-meet/issues/3987) jitsi : '1.21.0', // TODO Avoid using + (https://github.com/jitsi/jitsi-meet/issues/3987)
// For testing // For testing
junit : '4.12', junit : '4.12',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment