diff --git a/README.md b/README.md index e9d5ce03ccea3e222ddc53379c119a222687e413..61775b8221bf0c8350330861541a71be56dba8ad 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ cd jami-client-android/jami-android ### Troubleshoot -Jami Android doesn't use the system's `pkg-config`; it builds its own version with custom parameters to support cross-compilation. However, after cleaning the project, `pkg-config` may not be rebuilt, which could result in falling back to the system's version, leading to errors when trying to locate shared libraries. +Jami Android doesn't use the system's `pkg-config`; it builds its own version with custom parameters to support cross-compilation. However, after cleaning the project, `pkg-config` may not be rebuilt, which could result in falling back to the system's version, leading to errors when attempting to locate shared libraries. ```sh cd jami-client-android/daemon/extras/tools diff --git a/compile.sh b/compile.sh index 29378c8b302baab429a323cc33b84603031df81b..366e4aa27e1b6d5e0d929c23534def5ffc666b1c 100755 --- a/compile.sh +++ b/compile.sh @@ -29,7 +29,7 @@ export RELEASE if [ -z "$DAEMON_DIR" ]; then DAEMON_DIR="$(pwd)/daemon" - echo "DAEMON_DIR not provided trying to find it in $DAEMON_DIR" + echo "DAEMON_DIR not provided attempting to find it in $DAEMON_DIR" fi if [ ! -d "$DAEMON_DIR" ]; then echo 'Daemon not found.' diff --git a/jami-android/app/src/main/java/cx/ring/fragments/ConversationFragment.kt b/jami-android/app/src/main/java/cx/ring/fragments/ConversationFragment.kt index 450fa1e511c0a91f82b225ef793802713801b568..4bcfdff5f507b00343572f50932b4e22f35c481b 100644 --- a/jami-android/app/src/main/java/cx/ring/fragments/ConversationFragment.kt +++ b/jami-android/app/src/main/java/cx/ring/fragments/ConversationFragment.kt @@ -553,7 +553,7 @@ class ConversationFragment : BaseSupportFragment<ConversationPresenter, Conversa val c = context ?: return try { val photoFile = AndroidFileUtils.createImageFile(c) - Log.i(TAG, "takePicture: trying to save to $photoFile") + Log.i(TAG, "takePicture: attempting to save to $photoFile") val photoURI = ContentUri.getUriForFile(c, photoFile) val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE).putExtra(MediaStore.EXTRA_OUTPUT, photoURI) @@ -589,7 +589,7 @@ class ConversationFragment : BaseSupportFragment<ConversationPresenter, Conversa return op.observeOn(DeviceUtils.uiScheduler) .doFinally { setLoading(false) } .subscribe({}) { e -> - Log.e(TAG, "startFileSend: not able to create cache file", e) + Log.e(TAG, "startFileSend: unable to create cache file", e) displayErrorToast(Error.INVALID_FILE) } } @@ -828,7 +828,7 @@ class ConversationFragment : BaseSupportFragment<ConversationPresenter, Conversa sharedPreferences.edit().remove(KEY_PREFERENCE_CONVERSATION_LAST_READ).apply() } } catch (e: Exception) { - Log.e(TAG, "Can't load conversation preferences") + Log.e(TAG, "Unable to load conversation preferences") } var connection = locationServiceConnection @@ -975,7 +975,7 @@ class ConversationFragment : BaseSupportFragment<ConversationPresenter, Conversa override fun goToGroupCall( conversation: Conversation, contactUri: net.jami.model.Uri, hasVideo: Boolean ) { - // Try to find an existing call + // Attempt to find an existing call val conf = conversation.currentCall // If there is an existing call, go to it diff --git a/jami-android/app/src/main/java/cx/ring/services/CameraService.kt b/jami-android/app/src/main/java/cx/ring/services/CameraService.kt index 35d2fe4e8c30deade1784f517aed5d27c2277700..33c37582fa2118323f9ab32b53d741a0ef458d49 100644 --- a/jami-android/app/src/main/java/cx/ring/services/CameraService.kt +++ b/jami-android/app/src/main/java/cx/ring/services/CameraService.kt @@ -168,7 +168,7 @@ class CameraService internal constructor(c: Context) { Log.w(TAG, "setParameters() $camId $format $width $height $rate $rotation") val deviceParams = mNativeParams[camId] if (deviceParams == null) { - Log.w(TAG, "setParameters() can't find device") + Log.w(TAG, "setParameters() is unable to find device") return } var params = mParams[camId] @@ -307,7 +307,7 @@ class CameraService internal constructor(c: Context) { fun init(): Completable { val resetCamera = false return if (manager == null) - Completable.error(IllegalStateException("Video manager not available")) + Completable.error(IllegalStateException("Video manager is unavailable")) else loadDevices(manager) .map { devs: VideoDevices -> synchronized(addedDevices) { @@ -427,7 +427,7 @@ class CameraService internal constructor(c: Context) { put(outputBuffer) rewind() } - Log.i(TAG, "Cache new codec data (SPS/PPS, ...)") + Log.i(TAG, "Cache new codec data (SPS/PPS, …)") } } else { val isKeyFrame = info.flags and MediaCodec.BUFFER_FLAG_KEY_FRAME != 0 @@ -461,7 +461,7 @@ class CameraService internal constructor(c: Context) { codec.releaseOutputBuffer(index, false) } } catch (e: IllegalStateException) { - Log.e(TAG, "MediaCodec can't process buffer", e) + Log.e(TAG, "MediaCodec is unable to process buffer", e) } } @@ -475,7 +475,7 @@ class CameraService internal constructor(c: Context) { } codec.setCallback(callback, handler) } catch (e: Exception) { - Log.e(TAG, "Can't open codec", e) + Log.e(TAG, "Unable to open codec", e) if (codec != null) { codec.release() codec = null @@ -495,7 +495,7 @@ class CameraService internal constructor(c: Context) { putInt(MediaCodec.PARAMETER_KEY_REQUEST_SYNC_FRAME, 0) }) } catch (e: IllegalStateException) { - Log.w(TAG, "Can't send keyframe request", e) + Log.w(TAG, "Unable to send keyframe request", e) } } @@ -506,7 +506,7 @@ class CameraService internal constructor(c: Context) { putInt(MediaCodec.PARAMETER_KEY_VIDEO_BITRATE, bitrate * 1024) }) } catch (e: IllegalStateException) { - Log.w(TAG, "Can't set bitrate", e) + Log.w(TAG, "Unable to set bitrate", e) } } @@ -544,7 +544,7 @@ class CameraService internal constructor(c: Context) { if (r.first != null) break } if (r == null ) { - Log.e(TAG, "createVirtualDisplay failed, can't open encoder") + Log.e(TAG, "createVirtualDisplay failed, unable to open encoder") return null } } @@ -829,7 +829,7 @@ class CameraService internal constructor(c: Context) { p.orientation = cc.get(CameraCharacteristics.SENSOR_ORIENTATION)!! p.facing = cc.get(CameraCharacteristics.LENS_FACING)!! } catch (e: Exception) { - Log.e(TAG, "An error occurred getting camera info", e) + Log.e(TAG, "Error while getting the camera info", e) } return p } @@ -917,12 +917,12 @@ class CameraService internal constructor(c: Context) { Log.w(TAG, "FEATURE_IntraRefresh: " + codecCaps.isFeatureSupported(CodecCapabilities.FEATURE_IntraRefresh)) } } catch (e: Exception) { - Log.w(TAG, "Can't query codec info", e) + Log.w(TAG, "Unable to query codec info", e) } } } } catch (e: Exception) { - Log.w(TAG, "Can't query codec info", e) + Log.w(TAG, "Unable to query codec info", e) } } @@ -958,7 +958,7 @@ class CameraService internal constructor(c: Context) { bigEnough.size > 0 -> Collections.min(bigEnough, CompareSizesByArea()) notBigEnough.size > 0 -> Collections.max(notBigEnough, CompareSizesByArea()) else -> { - Log.e(TAG, "Couldn't find any suitable preview size") + Log.e(TAG, "Unable to find any suitable preview size") choices[0] } } diff --git a/jami-android/app/src/main/java/cx/ring/services/ContactServiceImpl.kt b/jami-android/app/src/main/java/cx/ring/services/ContactServiceImpl.kt index 8762856e097c5a896e3d0f2de9a90168e06f7605..3a299dd00f95319586d4350243bcae40fc64ec7b 100644 --- a/jami-android/app/src/main/java/cx/ring/services/ContactServiceImpl.kt +++ b/jami-android/app/src/main/java/cx/ring/services/ContactServiceImpl.kt @@ -140,7 +140,7 @@ class ContactServiceImpl(val mContext: Context, preferenceService: PreferencesSe while (it.moveToNext()) { val contactId = it.getLong(indexId) val contact = cache[contactId] - if (contact == null) Log.w(TAG, "Can't find contact with ID $contactId") else { + if (contact == null) Log.w(TAG, "Unable to find contact with ID $contactId") else { contact.setSystemContactInfo( contactId, it.getString(indexKey), @@ -198,7 +198,7 @@ class ContactServiceImpl(val mContext: Context, preferenceService: PreferencesSe Log.d(TAG, "findContactByIdFromSystem: Error while searching for contact id=$contactId", e) } if (contact == null) { - Log.d(TAG, "findContactByIdFromSystem: findById $contactId can't find contact.") + Log.d(TAG, "findContactByIdFromSystem: findById $contactId is unable to find contact.") } return contact } @@ -280,7 +280,7 @@ class ContactServiceImpl(val mContext: Context, preferenceService: PreferencesSe null ) if (result == null) { - Log.d(TAG, "findContactBySipNumberFromSystem: $number can't find contact.") + Log.d(TAG, "findContactBySipNumberFromSystem: $number is unable to find contact.") return Contact.buildSIP(net.jami.model.Uri.fromString(number)) } val indexId = result.getColumnIndex(ContactsContract.RawContacts.CONTACT_ID) @@ -319,7 +319,7 @@ class ContactServiceImpl(val mContext: Context, preferenceService: PreferencesSe val uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)) val result = contentResolver.query(uri, PHONELOOKUP_PROJECTION, null, null, null) if (result == null) { - Log.d(TAG, "findContactByNumberFromSystem: $number can't find contact.") + Log.d(TAG, "findContactByNumberFromSystem: $number is unable to find contact.") return findContactBySipNumberFromSystem(number) } if (result.moveToFirst()) { @@ -342,7 +342,7 @@ class ContactServiceImpl(val mContext: Context, preferenceService: PreferencesSe Log.d(TAG, "findContactByNumber: Error while searching for contact number=$number", e) } if (contact == null) { - Log.d(TAG, "findContactByNumberFromSystem: $number can't find contact.") + Log.d(TAG, "findContactByNumberFromSystem: $number is unable to find contact.") contact = findContactBySipNumberFromSystem(number) } if (contact != null) contact.isFromSystem = true diff --git a/jami-android/app/src/main/java/cx/ring/tv/conversation/TvConversationFragment.kt b/jami-android/app/src/main/java/cx/ring/tv/conversation/TvConversationFragment.kt index 05ccb25683054c0c8dbd1ece807ea6d68da67580..28c30754ce44c249bb323b34d55e954284e8ad84 100644 --- a/jami-android/app/src/main/java/cx/ring/tv/conversation/TvConversationFragment.kt +++ b/jami-android/app/src/main/java/cx/ring/tv/conversation/TvConversationFragment.kt @@ -469,7 +469,7 @@ class TvConversationFragment : BaseSupportFragment<ConversationPresenter, Conver } } - // Try to start the recorder with a given encoder and output format. + // Attempt to start the recorder with a given encoder and output format. private fun startRecorder(encoder: Int, outputFormat: Int): Boolean { try { val mediaRecorder = @@ -528,7 +528,7 @@ class TvConversationFragment : BaseSupportFragment<ConversationPresenter, Conver private fun startFileSend(op: Completable) { op.observeOn(AndroidSchedulers.mainThread()) .subscribe({}) { e: Throwable? -> - Log.e(TAG, "startFileSend: not able to create cache file", e) + Log.e(TAG, "startFileSend: unable to create cache file", e) displayErrorToast(Error.INVALID_FILE) } } @@ -690,7 +690,7 @@ class TvConversationFragment : BaseSupportFragment<ConversationPresenter, Conver contactUri: net.jami.model.Uri, hasVideo: Boolean ) { - // Try to find an existing call + // Attempt to find an existing call val conf = conversation.currentCall // If there is an existing call, go to it @@ -810,7 +810,7 @@ class TvConversationFragment : BaseSupportFragment<ConversationPresenter, Conver private fun startRecognizer() { if (!SpeechRecognizer.isRecognitionAvailable(requireContext())) { - Log.w(TAG, "Speech recognition not available.") + Log.w(TAG, "Speech recognition unavailable.") Toast.makeText( requireContext(), R.string.speech_recogniton_unavailable, diff --git a/jami-android/app/src/main/java/cx/ring/utils/AndroidFileUtils.kt b/jami-android/app/src/main/java/cx/ring/utils/AndroidFileUtils.kt index 88067719c52a8800a39fcf6cc5beb1a2961ad527..ee4b12ec550aeadd1f6eb58ae3db3f7431fdd9c8 100644 --- a/jami-android/app/src/main/java/cx/ring/utils/AndroidFileUtils.kt +++ b/jami-android/app/src/main/java/cx/ring/utils/AndroidFileUtils.kt @@ -63,7 +63,7 @@ object AndroidFileUtils { } /** - * Copy assets from a folder recursively ( files and subfolder) + * Copy assets from a folder recursively (files and subfolders) * @param assetManager Asset Manager ( you can get it from Context.getAssets() ) * @param fromAssetPath path to the assets folder we want to copy * @param toPath a directory in internal storage @@ -111,7 +111,7 @@ object AndroidFileUtils { return true } } catch (e: IOException) { - Log.e(TAG, "Error while reading an asset ", e) + Log.e(TAG, "Error while reading asset ", e) } return false } @@ -152,7 +152,7 @@ object AndroidFileUtils { } } } catch (e: IOException) { - Log.e(TAG, "Error while copying asset", e) + Log.e(TAG, "Error while copying asset ", e) false } @@ -327,11 +327,11 @@ object AndroidFileUtils { }.subscribeOn(Schedulers.io()) /** - * Copies a file to a predefined Uri destination + * Copies a file to a predefined URI destination * Uses the underlying copyFile(InputStream,OutputStream) * @param cr content resolver * @param input the file we want to copy - * @param outUri the uri destination + * @param outUri the URI destination * @return success value */ fun copyFileToUri(cr: ContentResolver, input: File?, outUri: Uri): Completable = Completable.fromAction { @@ -440,7 +440,7 @@ object AndroidFileUtils { return try { StatFs(path).availableBytes } catch (e: IllegalArgumentException) { - Log.e(TAG, "getSpaceLeft: not able to access path on $path") + Log.e(TAG, "getSpaceLeft: unable to access path on $path") -1L } } @@ -518,7 +518,7 @@ object AndroidFileUtils { val fileUri: Uri = try { ContentUri.getUriForFile(c, path, displayName) } catch (e: IllegalArgumentException) { - Log.e("File Selector", "The selected file can't be shared: " + path.name) + Log.e("File Selector", "Unable to share the selected file: " + path.name) null } ?: return shareFile(c, fileUri, displayName) @@ -542,7 +542,7 @@ object AndroidFileUtils { try { fileUri = ContentUri.getUriForFile(c, path, displayName) } catch (e: IllegalArgumentException) { - Log.e(TAG, "The selected file can't be shared: " + path.name) + Log.e(TAG, "Unable to share the selected file: " + path.name) } if (fileUri != null) openFile(c, fileUri, displayName) diff --git a/jami-android/app/src/main/java/cx/ring/viewmodel/JamiIdViewModel.kt b/jami-android/app/src/main/java/cx/ring/viewmodel/JamiIdViewModel.kt index 59595218a2caf93c435f4b6263ce8057b2486c50..039adea4f65797cfc37f4e2553f14cf1d05e4b12 100644 --- a/jami-android/app/src/main/java/cx/ring/viewmodel/JamiIdViewModel.kt +++ b/jami-android/app/src/main/java/cx/ring/viewmodel/JamiIdViewModel.kt @@ -43,7 +43,7 @@ enum class JamiIdStatus { EDITING_USERNAME_LOADING, // Looking if the typed username is available / while registering. EDITING_USERNAME_NOT_AVAILABLE, // The typed username is not available EDITING_USERNAME_AVAILABLE, // The typed username is available - USERNAME_DEFINED, // The username is defined (and can't be edited anymore) + USERNAME_DEFINED, // The username is defined (and is unable to be edited anymore) } data class JamiIdUiState( @@ -76,7 +76,7 @@ class JamiIdViewModel @Inject constructor( .switchMap { account -> usernameAvailabilitySubject.map { Pair(account, it) } } .debounce(500, TimeUnit.MILLISECONDS) .switchMapSingle { (account, username) -> - Log.i(TAG, "Checking if '$username' is available as new username...") + Log.i(TAG, "Checking if '$username' is available as new username…") accountService.findRegistrationByName( account.accountId, "", username ) diff --git a/jami-android/app/src/main/java/cx/ring/views/twopane/TwoPaneLayout.kt b/jami-android/app/src/main/java/cx/ring/views/twopane/TwoPaneLayout.kt index 50a9588766fcdf2649a47372eaee318ccfd7409f..ccefbc684fb2175cf343a901b9d7796b598fae3c 100644 --- a/jami-android/app/src/main/java/cx/ring/views/twopane/TwoPaneLayout.kt +++ b/jami-android/app/src/main/java/cx/ring/views/twopane/TwoPaneLayout.kt @@ -72,7 +72,7 @@ class TwoPaneLayout @JvmOverloads constructor( * is not taken into account in this method. This method is typically used to determine * whether the layout is showing two-pane or single-pane. * - * @return true if both panes cannot fit side-by-side, and detail pane in this layout has + * @return true if both panes are unable to fit side-by-side, and detail pane in this layout has * the capability to slide back and forth. */ /** @@ -279,9 +279,9 @@ class TwoPaneLayout @JvmOverloads constructor( } } // Second pass. Resolve weight. - // Child views overlap when the combined width of child views cannot fit into the - // available width. Each of child views is sized to fill all available space. If there is - // no overlap, distribute the extra width proportionally to weight. + // Child views overlap when the combined width of child views are unable to fit into + // the available width. Each of child views is sized to fill all available space. If + // there is no overlap, distribute the extra width proportionally to weight. if (canSlide || weightSum > 0) { for (i in 0 until childCount) { val child = getChildAt(i) @@ -294,8 +294,8 @@ class TwoPaneLayout @JvmOverloads constructor( var newWidth = measuredWidth var childWidthSpec = 0 if (canSlide) { - // Child view consumes available space if the combined width cannot fit into - // the layout available width. + // Child view consumes available space if the combined width is unable to + // fit into the layout available width. val horizontalMargin = lp.leftMargin + lp.rightMargin newWidth = widthAvailable - horizontalMargin childWidthSpec = MeasureSpec.makeMeasureSpec(newWidth, MeasureSpec.EXACTLY) @@ -338,7 +338,7 @@ class TwoPaneLayout @JvmOverloads constructor( val splitView = if (i == 0) leftSplitBounds else rightSplitBounds val lp = child.layoutParams as LayoutParams - // If child view cannot fit in the separating view, expand the child view to fill + // If child view is unable to fit in the separating view, expand the child view to fill // available space. val horizontalMargin = lp.leftMargin + lp.rightMargin val childHeightSpec = MeasureSpec.makeMeasureSpec(child.measuredHeight, MeasureSpec.EXACTLY) @@ -616,7 +616,7 @@ class TwoPaneLayout @JvmOverloads constructor( for (i in 0 until childCount) { val child = getChildAt(i) if (child.visibility == VISIBLE) { - // Force importance to "yes" since we can't read the value. + // Force importance to "yes" since the value is unable to be read. child.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES) info.addChild(child) } diff --git a/jami-android/app/src/main/res/layout/item_members_bottomsheet.xml b/jami-android/app/src/main/res/layout/item_members_bottomsheet.xml index 215ae4ce213c4c592e26f5c5c5c4ca762facb161..290325b1f9347fc701c35f90edbd987fd521d396 100644 --- a/jami-android/app/src/main/res/layout/item_members_bottomsheet.xml +++ b/jami-android/app/src/main/res/layout/item_members_bottomsheet.xml @@ -24,6 +24,6 @@ android:paddingRight="17dp" android:paddingLeft="17dp" android:fontFamily="@font/ubuntu_regular" - tools:text="Start Audio Call" /> + tools:text="Start audio call" /> </RelativeLayout> diff --git a/jami-android/app/src/main/res/values/strings.xml b/jami-android/app/src/main/res/values/strings.xml index fca9a535aad03bfa225eb221cc4243968bad1743..51f3edb37ae31160d566e78e10afb5ee0058d462 100644 --- a/jami-android/app/src/main/res/values/strings.xml +++ b/jami-android/app/src/main/res/values/strings.xml @@ -358,11 +358,11 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. <string name="conversation_type_contact">Jami contact</string> <string name="conversation_type_private">Private</string> <string name="conversation_type_group">Group</string> - <string name="conversation_contact_invited">%1$s was invited</string> - <string name="conversation_contact_added">%1$s joined</string> - <string name="conversation_contact_left">%1$s left</string> - <string name="conversation_contact_blocked">%1$s was blocked</string> - <string name="conversation_contact_unblocked">%1$s was unblocked</string> + <string name="conversation_contact_invited">%1$s was invited to join the conversation.</string> + <string name="conversation_contact_added">%1$s has joined the conversation.</string> + <string name="conversation_contact_left">%1$s has left the conversation.</string> + <string name="conversation_contact_blocked">%1$s was blocked from the conversation.</string> + <string name="conversation_contact_unblocked">%1$s was unblocked from the conversation.</string> <string name="conversation_search_hint">Search conversation</string> <string name="audio_recorder_error">Audio recorder app was not found.</string> diff --git a/jami-android/app/src/main/res/values/strings_account.xml b/jami-android/app/src/main/res/values/strings_account.xml index b4f4a8d6b42faa34c1d125fd2c78aec12cf244e9..011a7ae61cd3f6358ec63e6189ca8e624b5ce19b 100644 --- a/jami-android/app/src/main/res/values/strings_account.xml +++ b/jami-android/app/src/main/res/values/strings_account.xml @@ -82,7 +82,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. <!-- Basic Details --> <string name="account_preferences_basic_tab">General</string> <string name="account_basic_category">Basic Settings</string> - <string name="account_alias_label">Account name</string> + <string name="account_alias_label">Display name</string> <string name="account_hostname_label">Hostname</string> <string name="account_bootstrap_label">Bootstrap</string> <string name="account_name_server_label">Name server</string> @@ -123,8 +123,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. <string name="account_registration_exp_label">Registration Expire</string> <string name="account_local_interface_label">Local Interface</string> <string name="account_local_port_label">Local Port</string> - <string name="account_stun_enable_label">Use Stun</string> - <string name="account_stun_server_label">Stun Server</string> + <string name="account_stun_enable_label">Use STUN</string> + <string name="account_stun_server_label">STUN server</string> <string name="account_accept_files">Accept incoming files automatically</string> <string name="account_conversation_settings_title">Conversation settings</string> <string name="account_accept_files_max_size">Maximum file size to accept automatically</string> @@ -173,21 +173,21 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. <!-- TLS Details --> <string name="account_tls_transport_switch_label">Use TLS Transport</string> - <string name="account_tls_port_label">TLS Listener Port</string> - <string name="account_tls_certificate_list_label">Certification Authorities</string> - <string name="account_tls_certificate_file_label">Certificate File</string> - <string name="account_tls_private_key_file_label">Private Key File</string> - <string name="account_tls_password_label">Private Key Password</string> - <string name="account_tls_method_label">TLS Method</string> - <string name="account_tls_ciphers_label">TLS Ciphers</string> - <string name="account_tls_server_name_label">Server Name</string> - <string name="account_tls_verify_server_label">Verify Server</string> - <string name="account_tls_verify_client_label">Verify Client</string> - <string name="account_require_client_certificate_label">TLS Require Client Certificate</string> - <string name="account_tls_negotiation_timeout_sec">Negotiation Timeout (sec)</string> + <string name="account_tls_port_label">TLS listener port</string> + <string name="account_tls_certificate_list_label">Certification authorities</string> + <string name="account_tls_certificate_file_label">Certificate file</string> + <string name="account_tls_private_key_file_label">Private key file</string> + <string name="account_tls_password_label">Private key password</string> + <string name="account_tls_method_label">TLS method</string> + <string name="account_tls_ciphers_label">TLS ciphers</string> + <string name="account_tls_server_name_label">Server name</string> + <string name="account_tls_verify_server_label">Verify server</string> + <string name="account_tls_verify_client_label">Verify client</string> + <string name="account_require_client_certificate_label">TLS require client certificate</string> + <string name="account_tls_negotiation_timeout_sec">Negotiation timeout (sec)</string> <string name="account_rtp_max_port">Maximum</string> <string name="account_rtp_min_port">Minimum</string> - <string name="account_rtp_port_range">Audio RTP Port Range</string> + <string name="account_rtp_port_range">Audio RTP port range</string> <!-- restore/backup --> <string name="account_new_device_password">Enter main password to unlock account</string> @@ -243,16 +243,16 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. <string name="account_link_device">Connect from another device</string> <string name="account_link_button">Connect from network</string> <string name="account_link_archive_button">Connect from backup</string> - <string name="account_link_prompt_pin">Enter PIN</string> + <string name="account_link_prompt_pin">Enter PIN code</string> <string name="account_new_button">Create a Jami account</string> <string name="account_link_export_button">Link a new device</string> <string name="account_link_show_button">Show %d more linked device</string> <string name="account_link_hide_button">Hide linked device</string> - <string name="account_link_export_info">To use this account on other devices, you must first expose it on Jami. This will generate a PIN code that you must enter on the new device to set up the account. The PIN will expire in 10 minutes.</string> - <string name="account_start_export_button">Generate PIN</string> + <string name="account_link_export_info">To use this account on other devices, you must first expose it on Jami. This will generate a PIN code that you must enter on the new device to set up the account. The PIN code will expire in 10 minutes.</string> + <string name="account_start_export_button">Generate PIN code</string> <string name="account_end_export_button">close</string> - <string name="account_end_export_infos">Your PIN is:\n\n%%\n\nTo complete the process, you need to open Jami on the new device. Create a new account with “Link this device to an account”. The PIN will expire in 10 minutes.</string> - <string name="account_link_export_info_light">To use this account on other devices, you must first expose it on Jami. This will generate a PIN code that you must enter on the new device to set up the account. The PIN will expire in 10 minutes.</string> + <string name="account_end_export_infos">Your PIN code is:\n\n%%\n\nTo complete the process, you need to open Jami on the new device. Create a new account with “Link this device to an account”. The PIN code will expire in 10 minutes.</string> + <string name="account_link_export_info_light">To use this account on other devices, you must first expose it on Jami. This will generate a PIN code that you must enter on the new device to set up the account. The PIN code will expire in 10 minutes.</string> <string name="account_export_title">Link account to other devices</string> <string name="account_connect_server_button">Connect to management server</string> <string name="account_connect_button">Connect</string> @@ -266,10 +266,10 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. <!-- Name registration --> <string name="error_username_empty">Enter a username</string> - <string name="no_registered_name_for_account">No registered name</string> - <string name="username_available">Username available !</string> - <string name="register_name">Register Name</string> - <string name="trying_to_register_name">Trying to register name</string> + <string name="no_registered_name_for_account">No registered username</string> + <string name="username_available">Username available!</string> + <string name="register_name">Register username</string> + <string name="trying_to_register_name">Attempting to register username</string> <string name="registered_username">Registered username</string> <string name="register_username">Register public username</string> <string name="register_recommended">Recommended</string> @@ -298,11 +298,11 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. <string name="account_revoke_device_hint">Enter password to confirm</string> <string name="enter_password">Enter password</string> <string name="revoke_device_title">Revoke device</string> - <string name="revoke_device_message">Do you really want to revoke %1$s?</string> + <string name="revoke_device_message">Do you want to revoke %1$s?</string> <string name="revoke_device_wait_title">Please wait…</string> <string name="revoke_device_wait_message">Revoking device</string> <string name="rename_device_title">Rename this device</string> - <string name="rename_device_message">Choose a new name to identify this device in your Jami account</string> + <string name="rename_device_message">Enter device name to identify this device in your Jami account</string> <string name="rename_device_button">Rename device</string> <string name="account_rename_device_hint">Choose new device name</string> <string name="account_device_name_empty">Device name cannot be empty.</string> @@ -310,24 +310,24 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. <string name="account_disabled_indicator">disabled</string> <!-- Link a new device --> - <string name="account_link_prompt_pin_manually">Enter PIN manually</string> + <string name="account_link_prompt_pin_manually">Enter PIN code manually</string> <string name="qr_invalid">Not a Jami Authentication QR code</string> - <string name="content_description_checkbox">Your Qr Code is valid</string> + <string name="content_description_checkbox">Your QR code is valid</string> <string name="error_format_not_supported">This format is not supported.</string> - <string name="account_link_info">On the new Jami app, scan the QR code or enter manually the PIN.</string> + <string name="account_link_info">On the new Jami app, scan the QR code or enter manually the PIN code.</string> <string name="account_link_device_title">Link a new device</string> <string name="account_link_password">This account is password-encrypted, enter the password to generate the PIN code.</string> <string name="account_link_generate_button">Generate</string> <string name="account_link_time_valid">The PIN code will be invalid: %1$s.</string> - <string name="account_link_device_info">Choose “Link a new device” from the other Jami app to show the QR code or PIN</string> + <string name="account_link_device_info">Choose “Link a new device” from the other Jami app to show the QR code or PIN code.</string> <string name="account_generate_export_device">On the other device</string> <string name="account_generate_export_info">Install and launch Jami, select “Import from an other device” and scan the QR code.</string> - <string name="content_description_qr_generated">Your Qr Code</string> - <string name="account_generate_export_invalid">The PIN is no longer valid.\nEnter the password and generate another one to link the new device.</string> - <string name="account_generate_export_invalid_two">The PIN is no longer valid.\nGenerate another one to link the new device.</string> + <string name="content_description_qr_generated">Account QR code</string> + <string name="account_generate_export_invalid">The PIN code is no longer valid.\nEnter the password and generate another one to link the new device.</string> + <string name="account_generate_export_invalid_two">The PIN code is no longer valid.\nGenerate another one to link the new device.</string> <string name="help_pin_info">Fill if the account is password-encrypted</string> - <string name="connect_device_scanqr">Scan QR</string> - <string name="connect_device_enterPIN">Or enter PIN</string> + <string name="connect_device_scanqr">Scan QR code</string> + <string name="connect_device_enterPIN">Or enter PIN code</string> <string name="account_link_device_button">Connect</string> <!-- Biometry --> diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/model/Conversation.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/model/Conversation.kt index fd62ee53dd0d368f7bde546303ce2ef7230cedd5..ffb22ab7a011b74b1d27e2ee4a1f673e72f28f5b 100644 --- a/jami-android/libjamiclient/src/main/kotlin/net/jami/model/Conversation.kt +++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/model/Conversation.kt @@ -303,7 +303,7 @@ class Conversation : ConversationHistory { if (interaction.contact == null) { if (contacts.size == 1) interaction.contact = contacts[0] else { if (interaction.author == null) { - Log.e(TAG, "Can't set interaction properties: no author for type:" + interaction.type + " id:" + interaction.id + " status:" + interaction.status) + Log.e(TAG, "Unable to set interaction properties: no author for type:" + interaction.type + " id:" + interaction.id + " status:" + interaction.status) } else { interaction.contact = findContact(Uri.fromString(interaction.author!!)) } @@ -443,7 +443,7 @@ class Conversation : ConversationHistory { e.status = element.status updatedElementSubject.onNext(Pair(e, ElementStatus.UPDATE)) } else { - Log.e(TAG, "Can't find swarm message to update: ${element.messageId}") + Log.e(TAG, "Unable to find swarm message to update: ${element.messageId}") } } else { setInteractionProperties(element) @@ -456,7 +456,7 @@ class Conversation : ConversationHistory { return } } - Log.e(TAG, "Can't find message to update: ${element.id}") + Log.e(TAG, "Unable to find message to update: ${element.id}") } } @@ -680,7 +680,7 @@ class Conversation : ConversationHistory { lastEvent = interaction } if (!added) { - Log.e(TAG, "Can't attach interaction $id with parent ${interaction.parentId}") + Log.e(TAG, "Unable to attach interaction $id with parent ${interaction.parentId}") } mPendingMessages.remove(id)?.onSuccess(interaction) } @@ -746,7 +746,7 @@ class Conversation : ConversationHistory { /** Legacy means that user is consulting a contact */ fun isLegacy() = mode.blockingFirst() == Mode.Legacy - /** Syncing means that Jami is trying to download conversation from peer */ + /** Syncing means that Jami is attempting to download conversation from peer */ fun isSyncing() = mode.blockingFirst() == Mode.Syncing /** Tells if the conversation is a swarm:group. No matter how many participants. */ diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/services/AccountService.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/services/AccountService.kt index 352e62201f4760a6decc775cc5dd09f5c4dbd5fb..fcdad25a4afd3214c8ffcc6c65820e60c6f71105 100644 --- a/jami-android/libjamiclient/src/main/kotlin/net/jami/services/AccountService.kt +++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/services/AccountService.kt @@ -370,7 +370,7 @@ class AccountService( fun addAccount(map: Map<String, String>): Observable<Account> = Single.fromCallable { JamiService.addAccount(StringMap.toSwig(map)).apply { - if (isEmpty()) throw RuntimeException("Can't create account.") } + if (isEmpty()) throw RuntimeException("Unable to create account.") } } .flatMapObservable { accountId -> Observable.merge(observableAccountList.mapOptional { Optional.ofNullable(it.firstOrNull { a -> a.accountId == accountId }) }, @@ -566,7 +566,7 @@ class AccountService( */ fun setAccountsActive(active: Boolean) { mExecutor.execute { - Log.i(TAG, "setAccountsActive() running... $active") + Log.i(TAG, "setAccountsActive() running… $active") for (a in mAccountList) { // If the proxy is enabled we can considered the account // as always active @@ -680,7 +680,7 @@ class AccountService( fun renameDevice(accountId: String, newName: String) { val account = getAccount(accountId) mExecutor.execute { - Log.i(TAG, "renameDevice() thread running... $newName") + Log.i(TAG, "renameDevice() thread running… $newName") val details = JamiService.getAccountDetails(accountId) details[ConfigKey.ACCOUNT_DEVICE_NAME.key] = newName JamiService.setAccountDetails(accountId, details) @@ -692,7 +692,7 @@ class AccountService( fun exportToFile(accountId: String, absolutePath: String, scheme: String, password: String): Completable = Completable.fromAction { Log.w(TAG, "exportToFile() $accountId $absolutePath $scheme") - require(JamiService.exportToFile(accountId, absolutePath, scheme, password)) { "Can't export archive" } + require(JamiService.exportToFile(accountId, absolutePath, scheme, password)) { "Unable to export archive" } }.subscribeOn(scheduler) /** @@ -701,7 +701,7 @@ class AccountService( */ fun setAccountPassword(accountId: String, oldPassword: String, newPassword: String): Completable = Completable.fromAction { - require(JamiService.changeAccountPassword(accountId, oldPassword, newPassword)) { "Can't change password" } + require(JamiService.changeAccountPassword(accountId, oldPassword, newPassword)) { "Unable to change password" } }.subscribeOn(scheduler) fun getAccountPasswordKey(accountId: String, password: String): Single<ByteArray> = @@ -738,7 +738,7 @@ class AccountService( ): Map<String, String>? { try { return mExecutor.submit<HashMap<String, String>> { - Log.i(TAG, "validateCertificatePath() running...") + Log.i(TAG, "validateCertificatePath() running…") JamiService.validateCertificatePath(accountID, certificatePath, privateKeyPath, privateKeyPass, "").toNative() }.get() } catch (e: Exception) { @@ -750,7 +750,7 @@ class AccountService( fun validateCertificate(accountId: String, certificate: String): Map<String, String>? { try { return mExecutor.submit<HashMap<String, String>> { - Log.i(TAG, "validateCertificate() running...") + Log.i(TAG, "validateCertificate() running…") JamiService.validateCertificate(accountId, certificate).toNative() }.get() } catch (e: Exception) { @@ -762,7 +762,7 @@ class AccountService( fun getCertificateDetailsPath(accountId: String, certificatePath: String): Map<String, String>? { try { return mExecutor.submit<HashMap<String, String>> { - Log.i(TAG, "getCertificateDetailsPath() running...") + Log.i(TAG, "getCertificateDetailsPath() running…") JamiService.getCertificateDetails(accountId, certificatePath).toNative() }.get() } catch (e: Exception) { @@ -774,7 +774,7 @@ class AccountService( fun getCertificateDetails(accountId: String, certificateRaw: String): Map<String, String>? { try { return mExecutor.submit<HashMap<String, String>> { - Log.i(TAG, "getCertificateDetails() running...") + Log.i(TAG, "getCertificateDetails() running…") JamiService.getCertificateDetails(accountId, certificateRaw).toNative() }.get() } catch (e: Exception) { @@ -798,7 +798,7 @@ class AccountService( fun getCredentials(accountId: String): List<Map<String, String>>? { try { return mExecutor.submit<ArrayList<Map<String, String>>> { - Log.i(TAG, "getCredentials() running...") + Log.i(TAG, "getCredentials() running…") JamiService.getCredentials(accountId).toNative() }.get() } catch (e: Exception) { @@ -828,7 +828,7 @@ class AccountService( */ fun registerName(account: Account, name: String, scheme: String, password: String) { if (account.registeringUsername) { - Log.w(TAG, "Already trying to register username") + Log.w(TAG, "Already attempting to register username") return } account.registeringUsername = true @@ -1161,7 +1161,7 @@ class AccountService( Log.d(TAG, "nameRegistrationEnded: $accountId, $state, $name") val acc = getAccount(accountId) if (acc == null) { - Log.w(TAG, "Can't find account for name registration callback") + Log.w(TAG, "Unable to find account for name registration callback") return } acc.registeringUsername = false @@ -1455,7 +1455,7 @@ class AccountService( Log.w(TAG, "ConversationCallback: conversationReady $accountId/$conversationId") val account = getAccount(accountId) if (account == null) { - Log.w(TAG, "conversationReady: can't find account") + Log.w(TAG, "conversationReady: unable to find account") return } val info = JamiService.conversationInfos(accountId, conversationId).toNativeFromUtf8() @@ -1497,7 +1497,7 @@ class AccountService( fun conversationRemoved(accountId: String, conversationId: String) { val account = getAccount(accountId) if (account == null) { - Log.w(TAG, "conversationRemoved: can't find account") + Log.w(TAG, "conversationRemoved: unable to find account") return } account.removeSwarm(conversationId) @@ -1512,7 +1512,7 @@ class AccountService( Log.w(TAG, "ConversationCallback: conversationRequestReceived $accountId/$conversationId ${metadata.size}") val account = getAccount(accountId) if (account == null || conversationId.isEmpty()) { - Log.w(TAG, "conversationRequestReceived: can't find account") + Log.w(TAG, "conversationRequestReceived: unable to find account") return } val from = Uri.fromId(metadata["from"]!!) diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/services/CallService.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/services/CallService.kt index 4c5a843577c00fd543287c2ffe94408f5b1b4a37..d60060fa9fa7a07d2510571eb588e56655dbb3df 100644 --- a/jami-android/libjamiclient/src/main/kotlin/net/jami/services/CallService.kt +++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/services/CallService.kt @@ -118,7 +118,7 @@ abstract class CallService( conference.isModerator = isModerator conference.setInfo(newInfo) } else { - Log.w(TAG, "onConferenceInfoUpdated can't find conference $confId") + Log.w(TAG, "onConferenceInfoUpdated is unable to find conference $confId") } } @@ -618,8 +618,8 @@ abstract class CallService( * Replaces the current video media with a given source. * Creates the video media if none exists. * @param conf The conference to request a video media change on. - * @param uri The uri for the source. - * @param mute Whether to mute or un-mute the source. + * @param uri The URI for the source. + * @param mute Whether to mute or unmute the source. */ fun replaceVideoMedia(conf: Conference, uri: String, mute: Boolean) { val call = conf.firstCall ?: return @@ -660,12 +660,12 @@ abstract class CallService( } fun recordPlaybackFilepath(id: String, filename: String) { - Log.d(TAG, "record playback filepath: $id, $filename") + Log.d(TAG, "recordPlaybackFilepath: $id, $filename") // todo needs more explanations on that } fun onRtcpReportReceived(callId: String) { - Log.i(TAG, "on RTCP report received: $callId") + Log.i(TAG, "onRtcpReportReceived: $callId") } fun joinParticipant(accountId: String, selCallId: String, account2Id: String, dragCallId: String): Single<Boolean> { @@ -707,7 +707,7 @@ abstract class CallService( fun getConference(id: String): Conference? = conferences[id] fun conferenceCreated(accountId: String, conversationId: String, confId: String) { - Log.d(TAG, "conference created: $confId") + Log.d(TAG, "conferenceCreated: $confId") val conf = conferences.getOrPut(confId) { Conference(accountId, confId) } val participants = JamiService.getParticipantList(accountId, confId) val map = JamiService.getConferenceDetails(accountId, confId) @@ -724,7 +724,7 @@ abstract class CallService( } fun conferenceRemoved(accountId: String, confId: String) { - Log.d(TAG, "conference removed: $confId") + Log.d(TAG, "conferenceRemoved: $confId") conferences.remove(confId)?.let { conf -> for (call in conf.participants) { call.confId = null @@ -735,7 +735,7 @@ abstract class CallService( } fun conferenceChanged(accountId: String, confId: String, state: String) { - Log.d(TAG, "conference changed: $confId, $state") + Log.d(TAG, "conferenceChanged: $confId, $state") try { val participants: Set<String> = JamiService.getParticipantList(accountId, confId).toHashSet() @@ -745,7 +745,7 @@ abstract class CallService( for (callId in participants) { if (!conf.contains(callId)) { calls[callId]?.let { call -> - Log.d(TAG, "conference changed: adding participant " + callId + " " + call.contact) + Log.d(TAG, "conferenceChanged: adding participant " + callId + " " + call.contact) call.confId = confId conf.addParticipant(call) } @@ -760,7 +760,7 @@ abstract class CallService( while (i.hasNext()) { val call = i.next() if (!participants.contains(call.daemonIdString)) { - Log.d(TAG, "conference changed: removing participant " + call.daemonIdString + " " + call.contact) + Log.d(TAG, "conferenceChanged: removing participant " + call.daemonIdString + " " + call.contact) call.confId = null i.remove() removed = true diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/utils/FileUtils.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/utils/FileUtils.kt index dba30c17746f22e1a175fd317ab101a3c1a7b429..a3705fa5c4456c64ef2aa0cdbbaaf96b5de9728e 100644 --- a/jami-android/libjamiclient/src/main/kotlin/net/jami/utils/FileUtils.kt +++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/utils/FileUtils.kt @@ -32,7 +32,7 @@ object FileUtils { } } } catch (e: IOException) { - Log.w(TAG, "Can't copy file", e) + Log.w(TAG, "Unable to copy file", e) return false } return true @@ -40,18 +40,18 @@ object FileUtils { fun moveFile(file: File, dest: File): Boolean { if (!file.exists() || !file.canRead()) { - Log.d(TAG, "moveFile: file is not accessible " + file.exists() + " " + file.canRead()) + Log.d(TAG, "moveFile: file is inaccessible " + file.exists() + " " + file.canRead()) return false } if (file == dest) return true if (!file.renameTo(dest)) { - Log.w(TAG, "moveFile: can't rename file, trying copy+delete to $dest") + Log.w(TAG, "moveFile: unable to rename file, trying copy+delete to $dest") if (!copyFile(file, dest)) { - Log.w(TAG, "moveFile: can't copy file to $dest") + Log.w(TAG, "moveFile: unable to copy file to $dest") return false } if (!file.delete()) { - Log.w(TAG, "moveFile: can't delete old file from $file") + Log.w(TAG, "moveFile: unable to delete old file from $file") } } Log.d(TAG, "moveFile: moved $file to $dest")