diff --git a/build.gradle b/build.gradle index eedd3851471b3a27cda9d78c828abf23c4acf593..9f3964e8e1a194e640b0aa6d94c5e471e92a5fde 100644 --- a/build.gradle +++ b/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation "androidx.preference:preference:1.2.1" implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'com.google.android.material:material:1.13.0-alpha12' - implementation 'androidx.work:work-runtime:2.9.1' + implementation 'androidx.work:work-runtime:2.10.0' implementation "androidx.emoji2:emoji2:1.5.0" freeImplementation "androidx.emoji2:emoji2-bundled:1.5.0" @@ -96,7 +96,7 @@ dependencies { implementation "com.squareup.retrofit2:converter-gson:2.11.0" implementation "com.squareup.okhttp3:okhttp:4.12.0" - implementation 'com.google.guava:guava:33.4.0-android' + implementation 'com.google.guava:guava:33.4.6-android' quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.13.52' implementation 'im.conversations.webrtc:webrtc-android:129.0.0' @@ -112,11 +112,11 @@ ext { android { namespace 'eu.siacs.conversations' - compileSdk 34 + compileSdk 35 defaultConfig { minSdkVersion 23 - targetSdkVersion 34 + targetSdkVersion 35 versionCode 42140 versionName "2.18.1" archivesBaseName += "-$versionName" diff --git a/src/conversations/res/layout/activity_easy_invite.xml b/src/conversations/res/layout/activity_easy_invite.xml index 6f1c8fc57d386f4a45f4ef781dc37446ce61cd1f..3d1c20c36c09770a1d5bb003ef741271239295c1 100644 --- a/src/conversations/res/layout/activity_easy_invite.xml +++ b/src/conversations/res/layout/activity_easy_invite.xml @@ -5,6 +5,7 @@ = UI_REFRESH_THRESHOLD) { + if (force + || SystemClock.elapsedRealtime() - LAST_UI_UPDATE_CALL.get() + >= UI_REFRESH_THRESHOLD) { LAST_UI_UPDATE_CALL.set(SystemClock.elapsedRealtime()); mXmppConnectionService.updateConversationUi(); } @@ -138,7 +139,8 @@ public class AbstractConnectionManager { } public PowerManager.WakeLock createWakeLock(final String name) { - final PowerManager powerManager = ContextCompat.getSystemService(mXmppConnectionService, PowerManager.class); + final PowerManager powerManager = + ContextCompat.getSystemService(mXmppConnectionService, PowerManager.class); return powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, name); } @@ -160,7 +162,7 @@ public class AbstractConnectionManager { } public static Extension of(String path) { - //TODO accept List pathSegments + // TODO accept List pathSegments final int pos = path.lastIndexOf('/'); final String filename = path.substring(pos + 1).toLowerCase(); final String[] parts = filename.split("\\."); diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index da5231357e42cd486e205158aceabdc0a817cebc..8601d88f58cc51ad3f5c27ec82f96241fb5f1c9d 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -2,18 +2,15 @@ package eu.siacs.conversations.ui; import android.content.Intent; import android.os.Bundle; - import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; -import eu.siacs.conversations.ui.util.SettingsUtils; - public class ConversationActivity extends AppCompatActivity { - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - startActivity(new Intent(this, ConversationsActivity.class)); - finish(); - } + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + startActivity(new Intent(this, ConversationsActivity.class)); + finish(); + } } diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/Media.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/Media.java index 6a41c89067e0d853f5b8db0d4a7a4140e6aab11b..4a491143e198f70cf47da3a6b501a9a973c4b955 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/Media.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/Media.java @@ -1,18 +1,17 @@ package eu.siacs.conversations.xmpp.jingle; +import androidx.annotation.NonNull; import com.google.common.collect.ImmutableSet; - import java.util.Locale; import java.util.Set; -import javax.annotation.Nonnull; - public enum Media { - - VIDEO, AUDIO, UNKNOWN; + VIDEO, + AUDIO, + UNKNOWN; @Override - @Nonnull + @NonNull public String toString() { return super.toString().toLowerCase(Locale.ROOT); } diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/RtpContentMap.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/RtpContentMap.java index e8079fe4663e71c482cd527345b987673ae33810..a7ee89cea1200acdfb710c03c6c32f1eebba3a8e 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/RtpContentMap.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/RtpContentMap.java @@ -1,5 +1,6 @@ package eu.siacs.conversations.xmpp.jingle; +import androidx.annotation.NonNull; import com.google.common.base.MoreObjects; import com.google.common.base.Objects; import com.google.common.base.Preconditions; @@ -25,7 +26,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; -import javax.annotation.Nonnull; public class RtpContentMap extends AbstractContentMap { @@ -491,7 +491,7 @@ public class RtpContentMap extends AbstractContentMap { public final T track; public final RtpSender rtpSender; @@ -63,7 +58,7 @@ class TrackWrapper { } public static RtpTransceiver getTransceiver( - @Nonnull final PeerConnection peerConnection, final TrackWrapper trackWrapper) { + @NonNull final PeerConnection peerConnection, final TrackWrapper trackWrapper) { final RtpSender rtpSender = trackWrapper.rtpSender; final String rtpSenderId; try { diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/VideoSourceWrapper.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/VideoSourceWrapper.java index 89552fc1814b1d9215ce6727268923d64182d67a..3a8a4cc6d7440acb92e244f4349aa0115e6eb83d 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/VideoSourceWrapper.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/VideoSourceWrapper.java @@ -2,12 +2,15 @@ package eu.siacs.conversations.xmpp.jingle; import android.content.Context; import android.util.Log; - +import androidx.annotation.Nullable; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; - +import eu.siacs.conversations.Config; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Set; import org.webrtc.Camera2Enumerator; import org.webrtc.CameraEnumerationAndroid; import org.webrtc.CameraEnumerator; @@ -17,14 +20,6 @@ import org.webrtc.PeerConnectionFactory; import org.webrtc.SurfaceTextureHelper; import org.webrtc.VideoSource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Set; - -import javax.annotation.Nullable; - -import eu.siacs.conversations.Config; - class VideoSourceWrapper { private static final int CAPTURING_RESOLUTION = 1920; @@ -151,7 +146,7 @@ class VideoSourceWrapper { return videoSourceWrapper; } } - if (deviceNames.size() == 0) { + if (deviceNames.isEmpty()) { return null; } else { return of(enumerator, Iterables.get(deviceNames, 0), deviceNames); diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java index 09e95a7cd89e5d055e068fa48597aed5c700f03e..404461046576de1bc291601daa83353b276b0c9a 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java @@ -3,6 +3,8 @@ package eu.siacs.conversations.xmpp.jingle; import android.content.Context; import android.os.Build; import android.util.Log; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -22,8 +24,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicBoolean; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import org.webrtc.AudioSource; import org.webrtc.AudioTrack; import org.webrtc.CandidatePairChangeEvent; @@ -661,7 +661,7 @@ public class WebRTCWrapper { MoreExecutors.directExecutor()); } - @Nonnull + @NonNull private ListenableFuture getPeerConnectionFuture() { final PeerConnection peerConnection = this.peerConnection; if (peerConnection == null) { @@ -671,7 +671,7 @@ public class WebRTCWrapper { } } - @Nonnull + @NonNull private PeerConnection requirePeerConnection() { final PeerConnection peerConnection = this.peerConnection; if (peerConnection == null) { @@ -680,7 +680,7 @@ public class WebRTCWrapper { return peerConnection; } - @Nonnull + @NonNull private PeerConnectionFactory requirePeerConnectionFactory() { final PeerConnectionFactory peerConnectionFactory = this.peerConnectionFactory; if (peerConnectionFactory == null) { diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/transports/WebRTCDataChannelTransport.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/transports/WebRTCDataChannelTransport.java index 80b0322f4727cf418d7f37de58d9cb6feb1ddbf6..2540d6027daf5aa336b1e2e998b3ea8be877fd7e 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/transports/WebRTCDataChannelTransport.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/transports/WebRTCDataChannelTransport.java @@ -5,6 +5,7 @@ import static eu.siacs.conversations.xmpp.jingle.WebRTCWrapper.logDescription; import android.content.Context; import android.util.Log; +import androidx.annotation.NonNull; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.io.Closeables; @@ -41,7 +42,6 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicBoolean; -import javax.annotation.Nonnull; import org.webrtc.CandidatePairChangeEvent; import org.webrtc.DataChannel; import org.webrtc.IceCandidate; @@ -437,7 +437,7 @@ public class WebRTCDataChannelTransport implements Transport { localDescriptionExecutorService); } - @Nonnull + @NonNull private PeerConnectionFactory requirePeerConnectionFactory() { final PeerConnectionFactory peerConnectionFactory = this.peerConnectionFactory; if (peerConnectionFactory == null) { @@ -446,7 +446,7 @@ public class WebRTCDataChannelTransport implements Transport { return peerConnectionFactory; } - @Nonnull + @NonNull private PeerConnection requirePeerConnection() { final var future = this.peerConnectionFuture; if (future != null && future.isDone()) { diff --git a/src/main/res/layout-w945dp/activity_conversations.xml b/src/main/res/layout-w945dp/activity_conversations.xml index 6e0b978c49d3b8bce75fc246b027c7e066a9eed6..bece0533efd9ffbcedd1df7248ae1ebf80708def 100644 --- a/src/main/res/layout-w945dp/activity_conversations.xml +++ b/src/main/res/layout-w945dp/activity_conversations.xml @@ -3,6 +3,7 @@ + android:layout_height="match_parent" /> \ No newline at end of file diff --git a/src/main/res/layout/activity_change_password.xml b/src/main/res/layout/activity_change_password.xml index b5c9b2162747be61d5a42d51977d24258c86bacf..abcac84a06d6511fba9e81228692e878749807ad 100644 --- a/src/main/res/layout/activity_change_password.xml +++ b/src/main/res/layout/activity_change_password.xml @@ -4,7 +4,8 @@ + android:layout_height="match_parent" + android:fitsSystemWindows="true"> + android:layout_height="match_parent" + android:fitsSystemWindows="true"> diff --git a/src/main/res/layout/activity_muc_details.xml b/src/main/res/layout/activity_muc_details.xml index 0af16d1bd3bb61d522be191a62c8614efd37c709..30f6bf9401f1df9cd16a4b40e21277730599b9e9 100644 --- a/src/main/res/layout/activity_muc_details.xml +++ b/src/main/res/layout/activity_muc_details.xml @@ -6,6 +6,7 @@ + android:layout_height="match_parent" + android:fitsSystemWindows="true"> + android:layout_height="match_parent" + android:fitsSystemWindows="true"> + android:layout_height="match_parent" + android:fitsSystemWindows="true"> + android:layout_height="match_parent" + android:fitsSystemWindows="true"> + android:layout_height="match_parent" + android:fitsSystemWindows="true"> + android:layout_height="match_parent" + android:fitsSystemWindows="true"> @drawable/background_splash_screen true + true