refactor: gradle kotlin etc, broken trying to make instrumented tests actually run again

This commit is contained in:
0x330a 2023-08-07 17:59:58 +10:00
parent a99407ec6a
commit 56a7bc6c8e
No known key found for this signature in database
GPG Key ID: 267811D6E6A2698C
35 changed files with 150 additions and 122 deletions

View File

@ -6,7 +6,7 @@ buildscript {
} }
dependencies { dependencies {
classpath "com.android.tools.build:gradle:$gradlePluginVersion" classpath "com.android.tools.build:gradle:$gradlePluginVersion"
classpath files('libs/gradle-witness.jar') // classpath files('libs/gradle-witness.jar')
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlinVersion" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlinVersion"
classpath "com.google.gms:google-services:$googleServicesVersion" classpath "com.google.gms:google-services:$googleServicesVersion"
@ -130,9 +130,9 @@ dependencies {
testImplementation 'org.assertj:assertj-core:3.11.1' testImplementation 'org.assertj:assertj-core:3.11.1'
testImplementation "org.mockito:mockito-inline:4.10.0" testImplementation "org.mockito:mockito-inline:4.10.0"
testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion" testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion"
androidTestImplementation "org.mockito:mockito-android:4.10.0" androidTestImplementation "org.mockito:mockito-android:$mockitoAndroidVersion"
androidTestImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion" androidTestImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion"
testImplementation "androidx.test:core:$testCoreVersion" // testImplementation "androidx.test:core:$testCoreVersion"
testImplementation "androidx.arch.core:core-testing:2.2.0" testImplementation "androidx.arch.core:core-testing:2.2.0"
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion" testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion"
androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion" androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion"
@ -144,7 +144,7 @@ dependencies {
} }
// AndroidJUnitRunner and JUnit Rules // AndroidJUnitRunner and JUnit Rules
androidTestImplementation 'androidx.test:runner:1.5.2' androidTestImplementation "androidx.test:runner:$testRunnerVersion"
androidTestImplementation 'androidx.test:rules:1.5.0' androidTestImplementation 'androidx.test:rules:1.5.0'
// Assertions // Assertions
@ -192,12 +192,12 @@ android {
useLibrary 'org.apache.http.legacy' useLibrary 'org.apache.http.legacy'
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_17
} }
kotlinOptions { kotlinOptions {
jvmTarget = '1.8' jvmTarget = '17'
} }
packagingOptions { packagingOptions {
@ -220,6 +220,7 @@ android {
} }
buildFeatures { buildFeatures {
buildConfig true
compose true compose true
} }
composeOptions { composeOptions {
@ -337,3 +338,9 @@ def autoResConfig() {
kapt { kapt {
correctErrorTypes = true correctErrorTypes = true
} }
tasks.register("myConfigs") {
doLast {
configurations.forEach { println(it) }
}
}

View File

@ -20,7 +20,6 @@ import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.Cursor; import android.database.Cursor;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
@ -35,7 +34,6 @@ import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode; import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
@ -56,6 +54,10 @@ import org.session.libsession.messaging.messages.control.DataExtractionNotificat
import org.session.libsession.messaging.sending_receiving.MessageSender; import org.session.libsession.messaging.sending_receiving.MessageSender;
import org.session.libsession.snode.SnodeAPI; import org.session.libsession.snode.SnodeAPI;
import org.session.libsession.utilities.Address; import org.session.libsession.utilities.Address;
import org.session.libsession.utilities.Util;
import org.session.libsession.utilities.ViewUtil;
import org.session.libsession.utilities.recipients.Recipient;
import org.session.libsession.utilities.task.ProgressDialogAsyncTask;
import org.thoughtcrime.securesms.database.CursorRecyclerViewAdapter; import org.thoughtcrime.securesms.database.CursorRecyclerViewAdapter;
import org.thoughtcrime.securesms.database.MediaDatabase; import org.thoughtcrime.securesms.database.MediaDatabase;
import org.thoughtcrime.securesms.database.loaders.BucketedThreadMediaLoader; import org.thoughtcrime.securesms.database.loaders.BucketedThreadMediaLoader;
@ -63,13 +65,9 @@ import org.thoughtcrime.securesms.database.loaders.BucketedThreadMediaLoader.Buc
import org.thoughtcrime.securesms.database.loaders.ThreadMediaLoader; import org.thoughtcrime.securesms.database.loaders.ThreadMediaLoader;
import org.thoughtcrime.securesms.mms.GlideApp; import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.permissions.Permissions;
import org.session.libsession.utilities.recipients.Recipient;
import org.thoughtcrime.securesms.util.AttachmentUtil; import org.thoughtcrime.securesms.util.AttachmentUtil;
import org.thoughtcrime.securesms.util.SaveAttachmentTask; import org.thoughtcrime.securesms.util.SaveAttachmentTask;
import org.thoughtcrime.securesms.util.StickyHeaderDecoration; import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
import org.session.libsession.utilities.Util;
import org.session.libsession.utilities.ViewUtil;
import org.session.libsession.utilities.task.ProgressDialogAsyncTask;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
@ -436,17 +434,20 @@ public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity {
@Override @Override
public boolean onActionItemClicked(ActionMode mode, MenuItem menuItem) { public boolean onActionItemClicked(ActionMode mode, MenuItem menuItem) {
switch (menuItem.getItemId()) { int itemId = menuItem.getItemId();
case R.id.save: if (itemId == R.id.save) {
handleSaveMedia(getListAdapter().getSelectedMedia()); handleSaveMedia(getListAdapter().getSelectedMedia());
return true; return true;
case R.id.delete: } else if (itemId == R.id.save) {
handleDeleteMedia(getListAdapter().getSelectedMedia()); handleSaveMedia(getListAdapter().getSelectedMedia());
actionMode.finish(); return true;
return true; } else if (itemId == R.id.delete) {
case R.id.select_all: handleDeleteMedia(getListAdapter().getSelectedMedia());
handleSelectAllMedia(); actionMode.finish();
return true; return true;
} else if (itemId == R.id.select_all) {
handleSelectAllMedia();
return true;
} }
return false; return false;
} }

View File

@ -47,7 +47,6 @@ import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.core.util.Pair; import androidx.core.util.Pair;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.loader.app.LoaderManager; import androidx.loader.app.LoaderManager;
@ -491,12 +490,22 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item); super.onOptionsItemSelected(item);
switch (item.getItemId()) { int id = item.getItemId();
case R.id.media_preview__overview: showOverview(); return true; if (id == R.id.media_preview__overview) {
case R.id.media_preview__forward: forward(); return true; showOverview();
case R.id.save: saveToDisk(); return true; return true;
case R.id.delete: deleteMedia(); return true; } else if (id == R.id.media_preview__forward) {
case android.R.id.home: finish(); return true; forward();
return true;
} else if (id == R.id.save) {
saveToDisk();
return true;
} else if (id == R.id.delete) {
deleteMedia();
return true;
} else if (id == android.R.id.home) {
finish();
return true;
} }
return false; return false;

View File

@ -46,7 +46,6 @@ import org.thoughtcrime.securesms.crypto.BiometricSecretProvider;
import org.thoughtcrime.securesms.service.KeyCachingService; import org.thoughtcrime.securesms.service.KeyCachingService;
import org.thoughtcrime.securesms.util.AnimationCompleteListener; import org.thoughtcrime.securesms.util.AnimationCompleteListener;
import java.security.InvalidKeyException;
import java.security.Signature; import java.security.Signature;
import network.loki.messenger.R; import network.loki.messenger.R;
@ -170,7 +169,7 @@ public class PassphrasePromptActivity extends BaseActionBarActivity {
hint.setSpan(new TypefaceSpan("sans-serif"), 0, hint.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); hint.setSpan(new TypefaceSpan("sans-serif"), 0, hint.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
fingerprintPrompt.setImageResource(R.drawable.ic_fingerprint_white_48dp); fingerprintPrompt.setImageResource(R.drawable.ic_fingerprint_white_48dp);
fingerprintPrompt.getBackground().setColorFilter(getResources().getColor(R.color.signal_primary), PorterDuff.Mode.SRC_IN); fingerprintPrompt.getBackground().setColorFilter(getResources().getColor(org.session.libsession.R.color.signal_primary), PorterDuff.Mode.SRC_IN);
lockScreenButton.setOnClickListener(v -> resumeScreenLock()); lockScreenButton.setOnClickListener(v -> resumeScreenLock());
} }
@ -258,7 +257,7 @@ public class PassphrasePromptActivity extends BaseActionBarActivity {
handleAuthenticated(); handleAuthenticated();
fingerprintPrompt.setImageResource(R.drawable.ic_fingerprint_white_48dp); fingerprintPrompt.setImageResource(R.drawable.ic_fingerprint_white_48dp);
fingerprintPrompt.getBackground().setColorFilter(getResources().getColor(R.color.signal_primary), PorterDuff.Mode.SRC_IN); fingerprintPrompt.getBackground().setColorFilter(getResources().getColor(org.session.libsession.R.color.signal_primary), PorterDuff.Mode.SRC_IN);
} }
}).start(); }).start();
} }
@ -288,7 +287,7 @@ public class PassphrasePromptActivity extends BaseActionBarActivity {
handleAuthenticated(); handleAuthenticated();
fingerprintPrompt.setImageResource(R.drawable.ic_fingerprint_white_48dp); fingerprintPrompt.setImageResource(R.drawable.ic_fingerprint_white_48dp);
fingerprintPrompt.getBackground().setColorFilter(getResources().getColor(R.color.signal_primary), PorterDuff.Mode.SRC_IN); fingerprintPrompt.getBackground().setColorFilter(getResources().getColor(org.session.libsession.R.color.signal_primary), PorterDuff.Mode.SRC_IN);
} }
}).start(); }).start();
} }
@ -310,7 +309,7 @@ public class PassphrasePromptActivity extends BaseActionBarActivity {
@Override @Override
public void onAnimationEnd(Animation animation) { public void onAnimationEnd(Animation animation) {
fingerprintPrompt.setImageResource(R.drawable.ic_fingerprint_white_48dp); fingerprintPrompt.setImageResource(R.drawable.ic_fingerprint_white_48dp);
fingerprintPrompt.getBackground().setColorFilter(getResources().getColor(R.color.signal_primary), PorterDuff.Mode.SRC_IN); fingerprintPrompt.getBackground().setColorFilter(getResources().getColor(org.session.libsession.R.color.signal_primary), PorterDuff.Mode.SRC_IN);
} }
@Override @Override

View File

@ -53,7 +53,7 @@ class SessionDialogBuilder(val context: Context) {
fun title(text: CharSequence?) = title(text?.toString()) fun title(text: CharSequence?) = title(text?.toString())
fun title(text: String?) { fun title(text: String?) {
text(text, R.style.TextAppearance_AppCompat_Title) { setPadding(dp20) } text(text, androidx.appcompat.R.style.TextAppearance_AppCompat_Title) { setPadding(dp20) }
} }
fun text(@StringRes id: Int, style: Int = 0) = text(context.getString(id), style) fun text(@StringRes id: Int, style: Int = 0) = text(context.getString(id), style)

View File

@ -22,7 +22,6 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import network.loki.messenger.R
import network.loki.messenger.databinding.ActivityWebrtcBinding import network.loki.messenger.databinding.ActivityWebrtcBinding
import org.apache.commons.lang3.time.DurationFormatUtils import org.apache.commons.lang3.time.DurationFormatUtils
import org.session.libsession.avatars.ProfileContactPhoto import org.session.libsession.avatars.ProfileContactPhoto
@ -269,7 +268,7 @@ class WebRtcCallActivity : PassphraseRequiredActionBarActivity() {
val signalProfilePicture = latestRecipient.recipient.contactPhoto val signalProfilePicture = latestRecipient.recipient.contactPhoto
val avatar = (signalProfilePicture as? ProfileContactPhoto)?.avatarObject val avatar = (signalProfilePicture as? ProfileContactPhoto)?.avatarObject
val sizeInPX = val sizeInPX =
resources.getDimensionPixelSize(R.dimen.extra_large_profile_picture_size) resources.getDimensionPixelSize(org.session.libsession.R.dimen.extra_large_profile_picture_size)
binding.remoteRecipientName.text = displayName binding.remoteRecipientName.text = displayName
if (signalProfilePicture != null && avatar != "0" && avatar != "") { if (signalProfilePicture != null && avatar != "0" && avatar != "") {
glide.clear(binding.remoteRecipient) glide.clear(binding.remoteRecipient)

View File

@ -24,7 +24,7 @@ public class EmojiEditText extends AppCompatEditText {
} }
public EmojiEditText(Context context, AttributeSet attrs) { public EmojiEditText(Context context, AttributeSet attrs) {
this(context, attrs, R.attr.editTextStyle); this(context, attrs, android.R.attr.editTextStyle);
} }
public EmojiEditText(Context context, AttributeSet attrs, int defStyleAttr) { public EmojiEditText(Context context, AttributeSet attrs, int defStyleAttr) {

View File

@ -7,10 +7,8 @@ import android.view.View
import android.widget.LinearLayout import android.widget.LinearLayout
import network.loki.messenger.R import network.loki.messenger.R
import network.loki.messenger.databinding.ViewUserBinding import network.loki.messenger.databinding.ViewUserBinding
import org.session.libsession.messaging.MessagingModuleConfiguration
import org.session.libsession.messaging.contacts.Contact import org.session.libsession.messaging.contacts.Contact
import org.session.libsession.utilities.recipients.Recipient import org.session.libsession.utilities.recipients.Recipient
import org.thoughtcrime.securesms.conversation.v2.utilities.MentionManagerUtilities
import org.thoughtcrime.securesms.dependencies.DatabaseComponent import org.thoughtcrime.securesms.dependencies.DatabaseComponent
import org.thoughtcrime.securesms.mms.GlideRequests import org.thoughtcrime.securesms.mms.GlideRequests
@ -50,7 +48,7 @@ class UserView : LinearLayout {
fun bind(user: Recipient, glide: GlideRequests, actionIndicator: ActionIndicator, isSelected: Boolean = false) { fun bind(user: Recipient, glide: GlideRequests, actionIndicator: ActionIndicator, isSelected: Boolean = false) {
val isLocalUser = user.isLocalNumber val isLocalUser = user.isLocalNumber
fun getUserDisplayName(publicKey: String): String { fun getUserDisplayName(publicKey: String): String {
if (isLocalUser) return context.getString(R.string.MessageRecord_you) if (isLocalUser) return context.getString(org.session.libsession.R.string.MessageRecord_you)
val contact = DatabaseComponent.get(context).sessionContactDatabase().getContactWithSessionID(publicKey) val contact = DatabaseComponent.get(context).sessionContactDatabase().getContactWithSessionID(publicKey)
return contact?.displayName(Contact.ContactContext.REGULAR) ?: publicKey return contact?.displayName(Contact.ContactContext.REGULAR) ?: publicKey
} }

View File

@ -50,7 +50,7 @@ class InputBarButton : RelativeLayout {
if (hasOpaqueBackground) { if (hasOpaqueBackground) {
R.attr.input_bar_button_background_opaque R.attr.input_bar_button_background_opaque
} else if (isSendButton) { } else if (isSendButton) {
R.attr.colorAccent androidx.appcompat.R.attr.colorAccent
} else { } else {
R.attr.input_bar_button_background R.attr.input_bar_button_background
} }

View File

@ -121,9 +121,9 @@ class QuoteView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
// region Convenience // region Convenience
@ColorInt private fun getLineColor(isOutgoingMessage: Boolean): Int { @ColorInt private fun getLineColor(isOutgoingMessage: Boolean): Int {
return when { return when {
mode == Mode.Regular && !isOutgoingMessage -> context.getColorFromAttr(R.attr.colorAccent) mode == Mode.Regular && !isOutgoingMessage -> context.getColorFromAttr(androidx.appcompat.R.attr.colorAccent)
mode == Mode.Regular -> context.getColorFromAttr(R.attr.message_sent_text_color) mode == Mode.Regular -> context.getColorFromAttr(R.attr.message_sent_text_color)
else -> context.getColorFromAttr(R.attr.colorAccent) else -> context.getColorFromAttr(androidx.appcompat.R.attr.colorAccent)
} }
} }

View File

@ -310,7 +310,7 @@ class VisibleMessageView : LinearLayout {
message.isSyncFailed -> message.isSyncFailed ->
MessageStatusInfo( MessageStatusInfo(
R.drawable.ic_delivery_status_failed, R.drawable.ic_delivery_status_failed,
context.getColor(R.color.accent_orange), context.getColor(org.session.libsession.R.color.accent_orange),
R.string.delivery_status_sync_failed, R.string.delivery_status_sync_failed,
null null
) )
@ -323,7 +323,7 @@ class VisibleMessageView : LinearLayout {
message.isResyncing -> message.isResyncing ->
MessageStatusInfo( MessageStatusInfo(
R.drawable.ic_delivery_status_sending, R.drawable.ic_delivery_status_sending,
context.getColor(R.color.accent_orange), R.string.delivery_status_syncing, context.getColor(org.session.libsession.R.color.accent_orange), R.string.delivery_status_syncing,
context.getString(R.string.AccessibilityId_message_sent_status_syncing) context.getString(R.string.AccessibilityId_message_sent_status_syncing)
) )
message.isRead -> message.isRead ->

View File

@ -7,7 +7,6 @@ import android.view.View
import android.widget.RelativeLayout import android.widget.RelativeLayout
import androidx.core.view.isVisible import androidx.core.view.isVisible
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import network.loki.messenger.R
import network.loki.messenger.databinding.ViewVoiceMessageBinding import network.loki.messenger.databinding.ViewVoiceMessageBinding
import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment
import org.thoughtcrime.securesms.audio.AudioSlidePlayer import org.thoughtcrime.securesms.audio.AudioSlidePlayer
@ -118,7 +117,9 @@ class VoiceMessageView : RelativeLayout, AudioSlidePlayer.Listener {
} }
private fun renderIcon() { private fun renderIcon() {
val iconID = if (isPlaying) R.drawable.exo_icon_pause else R.drawable.exo_icon_play val iconID =
if (isPlaying) com.google.android.exoplayer2.ui.R.drawable.exo_icon_pause
else com.google.android.exoplayer2.ui.R.drawable.exo_icon_play
binding.voiceMessagePlaybackImageView.setImageResource(iconID) binding.voiceMessagePlaybackImageView.setImageResource(iconID)
} }

View File

@ -39,7 +39,7 @@ object MentionUtilities {
val publicKey = text.subSequence(matcher.start() + 1, matcher.end()).toString() // +1 to get rid of the @ val publicKey = text.subSequence(matcher.start() + 1, matcher.end()).toString() // +1 to get rid of the @
val isUserBlindedPublicKey = openGroup?.let { SodiumUtilities.sessionId(userPublicKey, publicKey, it.publicKey) } ?: false val isUserBlindedPublicKey = openGroup?.let { SodiumUtilities.sessionId(userPublicKey, publicKey, it.publicKey) } ?: false
val userDisplayName: String? = if (publicKey.equals(userPublicKey, ignoreCase = true) || isUserBlindedPublicKey) { val userDisplayName: String? = if (publicKey.equals(userPublicKey, ignoreCase = true) || isUserBlindedPublicKey) {
context.getString(R.string.MessageRecord_you) context.getString(org.session.libsession.R.string.MessageRecord_you)
} else { } else {
val contact = DatabaseComponent.get(context).sessionContactDatabase().getContactWithSessionID(publicKey) val contact = DatabaseComponent.get(context).sessionContactDatabase().getContactWithSessionID(publicKey)
@Suppress("NAME_SHADOWING") val context = if (openGroup != null) Contact.ContactContext.OPEN_GROUP else Contact.ContactContext.REGULAR @Suppress("NAME_SHADOWING") val context = if (openGroup != null) Contact.ContactContext.OPEN_GROUP else Contact.ContactContext.REGULAR

View File

@ -255,7 +255,7 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper {
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId) NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId)
.setSmallIcon(R.drawable.ic_notification) .setSmallIcon(R.drawable.ic_notification)
.setColor(context.getResources().getColor(R.color.textsecure_primary)) .setColor(context.getResources().getColor(org.session.libsession.R.color.textsecure_primary))
.setCategory(NotificationCompat.CATEGORY_ERROR) .setCategory(NotificationCompat.CATEGORY_ERROR)
.setContentTitle(context.getString(R.string.ErrorNotifier_migration)) .setContentTitle(context.getString(R.string.ErrorNotifier_migration))
.setContentText(context.getString(R.string.ErrorNotifier_migration_downgrade)) .setContentText(context.getString(R.string.ErrorNotifier_migration_downgrade))

View File

@ -3,9 +3,6 @@ package org.thoughtcrime.securesms.giph.ui;
import android.content.Context; import android.content.Context;
import android.graphics.Rect; import android.graphics.Rect;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import android.text.Editable; import android.text.Editable;
import android.text.InputType; import android.text.InputType;
import android.text.TextWatcher; import android.text.TextWatcher;
@ -20,9 +17,14 @@ import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import network.loki.messenger.R; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import org.thoughtcrime.securesms.components.AnimatingToggle; import org.thoughtcrime.securesms.components.AnimatingToggle;
import network.loki.messenger.R;
public class GiphyActivityToolbar extends Toolbar { public class GiphyActivityToolbar extends Toolbar {
@Nullable private OnFilterChangedListener filterListener; @Nullable private OnFilterChangedListener filterListener;
@ -42,7 +44,7 @@ public class GiphyActivityToolbar extends Toolbar {
} }
public GiphyActivityToolbar(Context context, AttributeSet attrs) { public GiphyActivityToolbar(Context context, AttributeSet attrs) {
this(context, attrs, R.attr.toolbarStyle); this(context, attrs, android.R.attr.toolbarStyle);
} }
public GiphyActivityToolbar(Context context, AttributeSet attrs, int defStyleAttr) { public GiphyActivityToolbar(Context context, AttributeSet attrs, int defStyleAttr) {

View File

@ -102,7 +102,7 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
setContentView(R.layout.activity_edit_closed_group) setContentView(R.layout.activity_edit_closed_group)
supportActionBar!!.setHomeAsUpIndicator( supportActionBar!!.setHomeAsUpIndicator(
ThemeUtil.getThemedDrawableResId(this, R.attr.actionModeCloseDrawable)) ThemeUtil.getThemedDrawableResId(this, androidx.appcompat.R.attr.actionModeCloseDrawable))
groupID = intent.getStringExtra(groupIDKey)!! groupID = intent.getStringExtra(groupIDKey)!!
val groupInfo = DatabaseComponent.get(this).groupDatabase().getGroup(groupID).get() val groupInfo = DatabaseComponent.get(this).groupDatabase().getGroup(groupID).get()

View File

@ -99,7 +99,7 @@ class PathStatusView : View {
val paths = withContext(Dispatchers.IO) { OnionRequestAPI.paths } val paths = withContext(Dispatchers.IO) { OnionRequestAPI.paths }
if (paths.isNotEmpty()) { if (paths.isNotEmpty()) {
setBackgroundResource(R.drawable.accent_dot) setBackgroundResource(R.drawable.accent_dot)
val hasPathsColor = context.getColor(R.color.accent_green) val hasPathsColor = context.getColor(org.session.libsession.R.color.accent_green)
mainColor = hasPathsColor mainColor = hasPathsColor
sessionShadowColor = hasPathsColor sessionShadowColor = hasPathsColor
} else { } else {

View File

@ -1,18 +1,9 @@
package org.thoughtcrime.securesms.mediasend; package org.thoughtcrime.securesms.mediasend;
import androidx.appcompat.app.ActionBar;
import androidx.lifecycle.ViewModelProvider;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.Point; import android.graphics.Point;
import android.os.Bundle; import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@ -21,8 +12,18 @@ import android.view.ViewGroup;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.Toast; import android.widget.Toast;
import org.thoughtcrime.securesms.mms.GlideApp; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import org.session.libsession.utilities.Util; import org.session.libsession.utilities.Util;
import org.thoughtcrime.securesms.mms.GlideApp;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -130,11 +131,10 @@ public class MediaPickerItemFragment extends Fragment implements MediaPickerItem
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { if (item.getItemId() == R.id.mediapicker_menu_add) {
case R.id.mediapicker_menu_add: adapter.setForcedMultiSelect(true);
adapter.setForcedMultiSelect(true); viewModel.onMultiSelectStarted();
viewModel.onMultiSelectStarted(); return true;
return true;
} }
return false; return false;
} }

View File

@ -31,7 +31,7 @@ public class MultipleRecipientNotificationBuilder extends AbstractNotificationBu
public MultipleRecipientNotificationBuilder(Context context, NotificationPrivacyPreference privacy) { public MultipleRecipientNotificationBuilder(Context context, NotificationPrivacyPreference privacy) {
super(context, privacy); super(context, privacy);
setColor(context.getResources().getColor(R.color.textsecure_primary)); setColor(context.getResources().getColor(org.session.libsession.R.color.textsecure_primary));
setSmallIcon(R.drawable.ic_notification); setSmallIcon(R.drawable.ic_notification);
setContentTitle(context.getString(R.string.app_name)); setContentTitle(context.getString(R.string.app_name));
setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, HomeActivity.class), PendingIntent.FLAG_IMMUTABLE)); setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, HomeActivity.class), PendingIntent.FLAG_IMMUTABLE));

View File

@ -22,7 +22,7 @@ public class PendingMessageNotificationBuilder extends AbstractNotificationBuild
Intent intent = new Intent(context, HomeActivity.class); Intent intent = new Intent(context, HomeActivity.class);
setSmallIcon(R.drawable.ic_notification); setSmallIcon(R.drawable.ic_notification);
setColor(context.getResources().getColor(R.color.textsecure_primary)); setColor(context.getResources().getColor(org.session.libsession.R.color.textsecure_primary));
setCategory(NotificationCompat.CATEGORY_MESSAGE); setCategory(NotificationCompat.CATEGORY_MESSAGE);
setContentTitle(context.getString(R.string.MessageNotifier_pending_signal_messages)); setContentTitle(context.getString(R.string.MessageNotifier_pending_signal_messages));

View File

@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.notifications
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage import com.google.firebase.messaging.RemoteMessage
import org.session.libsession.messaging.jobs.BatchMessageReceiveJob import org.session.libsession.messaging.jobs.BatchMessageReceiveJob
@ -37,7 +38,7 @@ class PushNotificationService : FirebaseMessagingService() {
Log.d("Loki", "Failed to decode data for message.") Log.d("Loki", "Failed to decode data for message.")
val builder = NotificationCompat.Builder(this, NotificationChannels.OTHER) val builder = NotificationCompat.Builder(this, NotificationChannels.OTHER)
.setSmallIcon(network.loki.messenger.R.drawable.ic_notification) .setSmallIcon(network.loki.messenger.R.drawable.ic_notification)
.setColor(this.getResources().getColor(network.loki.messenger.R.color.textsecure_primary)) .setColor(ContextCompat.getColor(this, org.session.libsession.R.color.textsecure_primary))
.setContentTitle("Session") .setContentTitle("Session")
.setContentText("You've got a new message.") .setContentText("You've got a new message.")
.setPriority(NotificationCompat.PRIORITY_DEFAULT) .setPriority(NotificationCompat.PRIORITY_DEFAULT)

View File

@ -65,7 +65,7 @@ public class SingleRecipientNotificationBuilder extends AbstractNotificationBuil
super(context, privacy); super(context, privacy);
setSmallIcon(R.drawable.ic_notification); setSmallIcon(R.drawable.ic_notification);
setColor(ContextCompat.getColor(context, R.color.accent_green)); setColor(ContextCompat.getColor(context, org.session.libsession.R.color.accent_green));
setCategory(NotificationCompat.CATEGORY_MESSAGE); setCategory(NotificationCompat.CATEGORY_MESSAGE);
if (!NotificationChannels.supported()) { if (!NotificationChannels.supported()) {

View File

@ -42,10 +42,10 @@ class PNModeActivity : BaseActionBarActivity() {
with(binding) { with(binding) {
contentView.disableClipping() contentView.disableClipping()
fcmOptionView.setOnClickListener { toggleFCM() } fcmOptionView.setOnClickListener { toggleFCM() }
fcmOptionView.mainColor = ThemeUtil.getThemedColor(root.context, R.attr.colorPrimary) fcmOptionView.mainColor = ThemeUtil.getThemedColor(root.context, androidx.appcompat.R.attr.colorPrimary)
fcmOptionView.strokeColor = resources.getColorWithID(R.color.pn_option_border, theme) fcmOptionView.strokeColor = resources.getColorWithID(R.color.pn_option_border, theme)
backgroundPollingOptionView.setOnClickListener { toggleBackgroundPolling() } backgroundPollingOptionView.setOnClickListener { toggleBackgroundPolling() }
backgroundPollingOptionView.mainColor = ThemeUtil.getThemedColor(root.context, R.attr.colorPrimary) backgroundPollingOptionView.mainColor = ThemeUtil.getThemedColor(root.context, androidx.appcompat.R.attr.colorPrimary)
backgroundPollingOptionView.strokeColor = resources.getColorWithID(R.color.pn_option_border, theme) backgroundPollingOptionView.strokeColor = resources.getColorWithID(R.color.pn_option_border, theme)
registerButton.setOnClickListener { register() } registerButton.setOnClickListener { register() }
} }
@ -153,7 +153,7 @@ class PNModeActivity : BaseActionBarActivity() {
if (selectedOptionView == null) { if (selectedOptionView == null) {
showSessionDialog { showSessionDialog {
title(R.string.activity_pn_mode_no_option_picked_dialog_title) title(R.string.activity_pn_mode_no_option_picked_dialog_title)
button(R.string.ok) button(android.R.string.ok)
} }
return return
} }

View File

@ -155,7 +155,7 @@ public abstract class CorrectedPreferenceFragment extends PreferenceFragmentComp
holder.itemView.setLayoutParams(layoutParams); holder.itemView.setLayoutParams(layoutParams);
setZeroPaddingToLayoutChildren(holder.itemView); setZeroPaddingToLayoutChildren(holder.itemView);
} else { } else {
View iconFrame = holder.itemView.findViewById(R.id.icon_frame); View iconFrame = holder.itemView.findViewById(androidx.preference.R.id.icon_frame);
if (iconFrame != null) { if (iconFrame != null) {
iconFrame.setVisibility(preference.getIcon() == null ? View.GONE : View.VISIBLE); iconFrame.setVisibility(preference.getIcon() == null ? View.GONE : View.VISIBLE);
} }

View File

@ -5,7 +5,6 @@ import android.os.Parcelable
import android.util.SparseArray import android.util.SparseArray
import android.view.View import android.view.View
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.widget.SwitchCompat
import androidx.core.view.children import androidx.core.view.children
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@ -33,13 +32,13 @@ class AppearanceSettingsActivity: PassphraseRequiredActionBarActivity(), View.On
private val accentColors private val accentColors
get() = mapOf( get() = mapOf(
binding.accentGreen to R.style.PrimaryGreen, binding.accentGreen to org.session.libsession.R.style.PrimaryGreen,
binding.accentBlue to R.style.PrimaryBlue, binding.accentBlue to org.session.libsession.R.style.PrimaryBlue,
binding.accentYellow to R.style.PrimaryYellow, binding.accentYellow to org.session.libsession.R.style.PrimaryYellow,
binding.accentPink to R.style.PrimaryPink, binding.accentPink to org.session.libsession.R.style.PrimaryPink,
binding.accentPurple to R.style.PrimaryPurple, binding.accentPurple to org.session.libsession.R.style.PrimaryPurple,
binding.accentOrange to R.style.PrimaryOrange, binding.accentOrange to org.session.libsession.R.style.PrimaryOrange,
binding.accentRed to R.style.PrimaryRed binding.accentRed to org.session.libsession.R.style.PrimaryRed
) )
private val themeViews private val themeViews
@ -73,9 +72,9 @@ class AppearanceSettingsActivity: PassphraseRequiredActionBarActivity(), View.On
viewModel.setNewStyle(mappedStyle) viewModel.setNewStyle(mappedStyle)
if (currentBase != newBase) { if (currentBase != newBase) {
if (newBase == R.style.Ocean) { if (newBase == R.style.Ocean) {
viewModel.setNewAccent(R.style.PrimaryBlue) viewModel.setNewAccent(org.session.libsession.R.style.PrimaryBlue)
} else if (newBase == R.style.Classic) { } else if (newBase == R.style.Classic) {
viewModel.setNewAccent(R.style.PrimaryGreen) viewModel.setNewAccent(org.session.libsession.R.style.PrimaryGreen)
} }
} }
} }

View File

@ -3,11 +3,11 @@ package org.thoughtcrime.securesms.preferences.widgets;
import android.content.Context; import android.content.Context;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.util.AttributeSet;
import android.widget.ImageView;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder; import androidx.preference.PreferenceViewHolder;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import network.loki.messenger.R; import network.loki.messenger.R;
@ -58,7 +58,7 @@ public class ContactPreference extends Preference {
int color; int color;
if (secure) { if (secure) {
color = getContext().getResources().getColor(R.color.textsecure_primary); color = getContext().getResources().getColor(org.session.libsession.R.color.textsecure_primary);
} else { } else {
color = getContext().getResources().getColor(R.color.grey_600); color = getContext().getResources().getColor(R.color.grey_600);
} }

View File

@ -69,7 +69,7 @@ public class UpdateApkReadyListener extends BroadcastReceiver {
.setContentTitle(context.getString(R.string.UpdateApkReadyListener_Signal_update)) .setContentTitle(context.getString(R.string.UpdateApkReadyListener_Signal_update))
.setContentText(context.getString(R.string.UpdateApkReadyListener_a_new_version_of_signal_is_available_tap_to_update)) .setContentText(context.getString(R.string.UpdateApkReadyListener_a_new_version_of_signal_is_available_tap_to_update))
.setSmallIcon(R.drawable.ic_notification) .setSmallIcon(R.drawable.ic_notification)
.setColor(context.getResources().getColor(R.color.textsecure_primary)) .setColor(context.getResources().getColor(org.session.libsession.R.color.textsecure_primary))
.setPriority(NotificationCompat.PRIORITY_HIGH) .setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_REMINDER) .setCategory(NotificationCompat.CATEGORY_REMINDER)
.setContentIntent(pendingIntent) .setContentIntent(pendingIntent)

View File

@ -91,8 +91,8 @@ fun String.getThemeStyle(): Int = when (this) {
@StyleRes @StyleRes
fun Int.getDefaultAccentColor(): Int = fun Int.getDefaultAccentColor(): Int =
if (this == R.style.Ocean_Dark || this == R.style.Ocean_Light) R.style.PrimaryBlue if (this == R.style.Ocean_Dark || this == R.style.Ocean_Light) org.session.libsession.R.style.PrimaryBlue
else R.style.PrimaryGreen else org.session.libsession.R.style.PrimaryGreen
data class ThemeState ( data class ThemeState (
@StyleRes val theme: Int, @StyleRes val theme: Int,

View File

@ -10,12 +10,11 @@ import android.graphics.PointF
import android.graphics.Rect import android.graphics.Rect
import android.util.Size import android.util.Size
import android.view.View import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import androidx.annotation.DimenRes import androidx.annotation.DimenRes
import network.loki.messenger.R
import org.session.libsession.utilities.getColorFromAttr
import android.view.inputmethod.InputMethodManager
import androidx.core.graphics.applyCanvas import androidx.core.graphics.applyCanvas
import org.session.libsession.utilities.getColorFromAttr
import kotlin.math.roundToInt import kotlin.math.roundToInt
fun View.contains(point: PointF): Boolean { fun View.contains(point: PointF): Boolean {
@ -30,7 +29,7 @@ val View.hitRect: Rect
} }
@ColorInt @ColorInt
fun Context.getAccentColor() = getColorFromAttr(R.attr.colorAccent) fun Context.getAccentColor() = getColorFromAttr(androidx.appcompat.R.attr.colorAccent)
fun View.animateSizeChange(@DimenRes startSizeID: Int, @DimenRes endSizeID: Int, animationDuration: Long = 250) { fun View.animateSizeChange(@DimenRes startSizeID: Int, @DimenRes endSizeID: Int, animationDuration: Long = 250) {
val startSize = resources.getDimension(startSizeID) val startSize = resources.getDimension(startSizeID)

View File

@ -13,7 +13,7 @@
#Mon Jun 26 09:56:43 AEST 2023 #Mon Jun 26 09:56:43 AEST 2023
android.enableJetifier=true android.enableJetifier=true
gradlePluginVersion=7.3.1 gradlePluginVersion=8.1.0
org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M" org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M"
org.gradle.unsafe.configuration-cache=true org.gradle.unsafe.configuration-cache=true
@ -21,7 +21,7 @@ googleServicesVersion=4.3.12
kotlinVersion=1.8.21 kotlinVersion=1.8.21
android.useAndroidX=true android.useAndroidX=true
appcompatVersion=1.6.1 appcompatVersion=1.6.1
coreVersion=1.8.0 coreVersion=1.10.1
coroutinesVersion=1.6.4 coroutinesVersion=1.6.4
curve25519Version=0.6.0 curve25519Version=0.6.0
daggerVersion=2.46.1 daggerVersion=2.46.1
@ -32,9 +32,20 @@ kotlinxJsonVersion=1.3.3
kovenantVersion=3.3.0 kovenantVersion=3.3.0
lifecycleVersion=2.5.1 lifecycleVersion=2.5.1
materialVersion=1.8.0 materialVersion=1.8.0
mockitoKotlinVersion=4.1.0 mockitoAndroidVersion=5.4.0
mockitoKotlinVersion=5.0.0
okhttpVersion=3.12.1 okhttpVersion=3.12.1
pagingVersion=3.0.0 pagingVersion=3.0.0
preferenceVersion=1.2.0 preferenceVersion=1.2.0
protobufVersion=2.5.0 protobufVersion=2.5.0
testCoreVersion=1.5.0 testCoreVersion=1.5.0
testEspressoVersion=3.5.1
extJunitVersion=1.1.5
testMonitorVersion=1.6.1
testRunnerVersion=1.5.2
testRulesVersion=1.5.0
testServicesVersion=1.4.2
testOrchestratorVersion=1.4.2
testExtTruthVersion=1.5.0
testAnnotationVersion=1.0.1

View File

@ -1,6 +1,6 @@
#Thu Dec 30 07:09:53 SAST 2021 #Thu Dec 30 07:09:53 SAST 2021
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

View File

@ -30,18 +30,18 @@ android {
} }
} }
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_17
} }
kotlinOptions { kotlinOptions {
jvmTarget = '1.8' jvmTarget = '17'
} }
} }
dependencies { dependencies {
testImplementation 'junit:junit:4.13.2' testImplementation "junit:junit:$junitVersion"
implementation(project(":libsignal")) implementation(project(":libsignal"))
implementation "com.google.protobuf:protobuf-java:$protobufVersion" implementation "com.google.protobuf:protobuf-java:$protobufVersion"
androidTestImplementation 'androidx.test.ext:junit:1.1.4' androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
} }

View File

@ -4,6 +4,7 @@ plugins {
} }
android { android {
namespace "org.session.libsession"
compileSdkVersion androidCompileSdkVersion compileSdkVersion androidCompileSdkVersion
defaultConfig { defaultConfig {
@ -11,8 +12,8 @@ android {
} }
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_17
} }
} }
@ -28,8 +29,8 @@ dependencies {
implementation "com.google.android.material:material:$materialVersion" implementation "com.google.android.material:material:$materialVersion"
implementation "com.google.protobuf:protobuf-java:$protobufVersion" implementation "com.google.protobuf:protobuf-java:$protobufVersion"
implementation "com.google.dagger:hilt-android:$daggerVersion" implementation "com.google.dagger:hilt-android:$daggerVersion"
androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation "com.github.bumptech.glide:glide:$glideVersion" implementation "com.github.bumptech.glide:glide:$glideVersion"
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
implementation 'com.annimon:stream:1.1.8' implementation 'com.annimon:stream:1.1.8'
@ -44,10 +45,10 @@ dependencies {
implementation "nl.komponents.kovenant:kovenant:$kovenantVersion" implementation "nl.komponents.kovenant:kovenant:$kovenantVersion"
testImplementation "junit:junit:$junitVersion" testImplementation "junit:junit:$junitVersion"
testImplementation 'org.assertj:assertj-core:3.11.1' testImplementation 'org.assertj:assertj-core:3.11.1'
testImplementation "org.mockito:mockito-inline:4.0.0" testImplementation "org.mockito:mockito-inline:4.10.0"
testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion" testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion"
testImplementation "androidx.test:core:$testCoreVersion" testImplementation "androidx.test:core:$testCoreVersion"
testImplementation "androidx.arch.core:core-testing:2.1.0" testImplementation "androidx.arch.core:core-testing:2.2.0"
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion" testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion"
testImplementation "org.conscrypt:conscrypt-openjdk-uber:2.0.0" testImplementation "org.conscrypt:conscrypt-openjdk-uber:2.0.0"
implementation 'org.greenrobot:eventbus:3.0.0' implementation 'org.greenrobot:eventbus:3.0.0'

View File

@ -740,7 +740,7 @@ interface TextSecurePreferences {
@JvmStatic @JvmStatic
fun getNotificationLedColor(context: Context): Int { fun getNotificationLedColor(context: Context): Int {
return getIntegerPreference(context, LED_COLOR_PREF_PRIMARY, ThemeUtil.getThemedColor(context, R.attr.colorAccent)) return getIntegerPreference(context, LED_COLOR_PREF_PRIMARY, ThemeUtil.getThemedColor(context, androidx.appcompat.R.attr.colorAccent))
} }
@JvmStatic @JvmStatic

View File

@ -2,6 +2,7 @@ apply plugin: 'com.android.library'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
android { android {
namespace "org.session.libsignal"
compileSdkVersion androidCompileSdkVersion compileSdkVersion androidCompileSdkVersion
defaultConfig { defaultConfig {
@ -9,8 +10,8 @@ android {
} }
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_17
} }
} }