diff --git a/app/build.gradle b/app/build.gradle
index 98b3ade9b3..377ac445dd 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -288,6 +288,8 @@ dependencies {
implementation 'androidx.core:core-ktx:1.12.0'
+ implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0")
+
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:5.10.0'
androidTestImplementation 'org.mockito:mockito-android:5.10.0'
diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
index ae9e06c6db..cab4d36479 100644
--- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
@@ -4629,7 +4629,7 @@ class ChatActivity :
when (recent.systemMessageType) {
ChatMessage.SystemMessageType.CALL_STARTED -> { // add CallStartedMessage with id -2
if (!callStarted) {
- val callStartedChatMessage = ChatMessage()
+ val callStartedChatMessage = ChatMessage(token = "0")
callStartedChatMessage.jsonMessageId = CALL_STARTED_ID
callStartedChatMessage.actorId = "-2"
val name = if (recent.actorDisplayName.isNullOrEmpty()) "Guest" else recent.actorDisplayName
diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.kt b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.kt
index 789987df73..8919c4f813 100644
--- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.kt
+++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.kt
@@ -29,7 +29,7 @@ import at.bitfire.dav4jvm.property.GetContentType
import at.bitfire.dav4jvm.property.GetLastModified
import at.bitfire.dav4jvm.property.ResourceType
import at.bitfire.dav4jvm.property.ResourceType.Companion.COLLECTION
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.components.filebrowser.models.properties.NCEncrypted
import com.nextcloud.talk.components.filebrowser.models.properties.NCPermission
import com.nextcloud.talk.components.filebrowser.models.properties.NCPreview
@@ -41,7 +41,7 @@ import kotlinx.parcelize.Parcelize
import java.io.File
@Parcelize
-@JsonObject
+@Serializable
data class BrowserFile(
var path: String? = null,
var displayName: String? = null,
diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java b/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java
deleted file mode 100644
index 6da4de8c39..0000000000
--- a/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * Nextcloud Talk application
- *
- * @author Mario Danic
- * Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.nextcloud.talk.dagger.modules;
-
-import android.content.Context;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.github.aurae.retrofit2.LoganSquareConverterFactory;
-import com.nextcloud.talk.BuildConfig;
-import com.nextcloud.talk.R;
-import com.nextcloud.talk.api.NcApi;
-import com.nextcloud.talk.application.NextcloudTalkApplication;
-import com.nextcloud.talk.users.UserManager;
-import com.nextcloud.talk.utils.ApiUtils;
-import com.nextcloud.talk.utils.LoggingUtils;
-import com.nextcloud.talk.utils.preferences.AppPreferences;
-import com.nextcloud.talk.utils.ssl.KeyManager;
-import com.nextcloud.talk.utils.ssl.SSLSocketFactoryCompat;
-import com.nextcloud.talk.utils.ssl.TrustManager;
-
-import java.io.IOException;
-import java.net.CookieManager;
-import java.net.InetSocketAddress;
-import java.net.Proxy;
-import java.nio.charset.StandardCharsets;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
-import java.util.concurrent.TimeUnit;
-
-import javax.inject.Singleton;
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.X509KeyManager;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import dagger.Module;
-import dagger.Provides;
-import io.reactivex.schedulers.Schedulers;
-import okhttp3.Authenticator;
-import okhttp3.Cache;
-import okhttp3.Credentials;
-import okhttp3.Dispatcher;
-import okhttp3.Interceptor;
-import okhttp3.JavaNetCookieJar;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
-import okhttp3.Route;
-import okhttp3.internal.tls.OkHostnameVerifier;
-import okhttp3.logging.HttpLoggingInterceptor;
-import retrofit2.Retrofit;
-import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
-
-@Module(includes = DatabaseModule.class)
-public class RestModule {
-
- private static final String TAG = "RestModule";
- private final Context context;
-
- public RestModule(Context context) {
- this.context = context;
- }
-
- @Singleton
- @Provides
- NcApi provideNcApi(Retrofit retrofit) {
- return retrofit.create(NcApi.class);
- }
-
- @Singleton
- @Provides
- Proxy provideProxy(AppPreferences appPreferences) {
- if (!TextUtils.isEmpty(appPreferences.getProxyType()) && !"No proxy".equals(appPreferences.getProxyType())
- && !TextUtils.isEmpty(appPreferences.getProxyHost())) {
- GetProxyRunnable getProxyRunnable = new GetProxyRunnable(appPreferences);
- Thread getProxyThread = new Thread(getProxyRunnable);
- getProxyThread.start();
- try {
- getProxyThread.join();
- return getProxyRunnable.getProxyValue();
- } catch (InterruptedException e) {
- Log.e(TAG, "Failed to join the thread while getting proxy: " + e.getLocalizedMessage());
- return Proxy.NO_PROXY;
- }
- } else {
- return Proxy.NO_PROXY;
- }
- }
-
- @Singleton
- @Provides
- Retrofit provideRetrofit(OkHttpClient httpClient) {
- Retrofit.Builder retrofitBuilder = new Retrofit.Builder()
- .client(httpClient)
- .baseUrl("https://nextcloud.com")
- .addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
- .addConverterFactory(LoganSquareConverterFactory.create());
-
- return retrofitBuilder.build();
- }
-
- @Singleton
- @Provides
- TrustManager provideTrustManager() {
- return new TrustManager();
- }
-
- @Singleton
- @Provides
- KeyManager provideKeyManager(AppPreferences appPreferences, UserManager userManager) {
- KeyStore keyStore = null;
- try {
- keyStore = KeyStore.getInstance("AndroidKeyStore");
- keyStore.load(null);
- KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
- kmf.init(keyStore, null);
- X509KeyManager origKm = (X509KeyManager) kmf.getKeyManagers()[0];
- return new KeyManager(origKm, userManager, appPreferences);
- } catch (KeyStoreException e) {
- Log.e(TAG, "KeyStoreException " + e.getLocalizedMessage());
- } catch (CertificateException e) {
- Log.e(TAG, "CertificateException " + e.getLocalizedMessage());
- } catch (NoSuchAlgorithmException e) {
- Log.e(TAG, "NoSuchAlgorithmException " + e.getLocalizedMessage());
- } catch (IOException e) {
- Log.e(TAG, "IOException " + e.getLocalizedMessage());
- } catch (UnrecoverableKeyException e) {
- Log.e(TAG, "UnrecoverableKeyException " + e.getLocalizedMessage());
- }
-
- return null;
- }
-
- @Singleton
- @Provides
- SSLSocketFactoryCompat provideSslSocketFactoryCompat(KeyManager keyManager, TrustManager
- trustManager) {
- return new SSLSocketFactoryCompat(keyManager, trustManager);
- }
-
- @Singleton
- @Provides
- CookieManager provideCookieManager() {
- return new CookieManager();
- }
-
- @Singleton
- @Provides
- Cache provideCache() {
- int cacheSize = 128 * 1024 * 1024; // 128 MB
-
- return new Cache(NextcloudTalkApplication.Companion.getSharedApplication().getCacheDir(), cacheSize);
- }
-
- @Singleton
- @Provides
- Dispatcher provideDispatcher() {
- Dispatcher dispatcher = new Dispatcher();
- dispatcher.setMaxRequestsPerHost(100);
- dispatcher.setMaxRequests(100);
- return dispatcher;
- }
-
- @Singleton
- @Provides
- OkHttpClient provideHttpClient(Proxy proxy, AppPreferences appPreferences,
- TrustManager trustManager,
- SSLSocketFactoryCompat sslSocketFactoryCompat, Cache cache,
- CookieManager cookieManager, Dispatcher dispatcher) {
- OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
-
- httpClient.retryOnConnectionFailure(true);
- httpClient.connectTimeout(45, TimeUnit.SECONDS);
- httpClient.readTimeout(45, TimeUnit.SECONDS);
- httpClient.writeTimeout(45, TimeUnit.SECONDS);
-
- httpClient.cookieJar(new JavaNetCookieJar(cookieManager));
- httpClient.cache(cache);
-
- // Trust own CA and all self-signed certs
- httpClient.sslSocketFactory(sslSocketFactoryCompat, trustManager);
- httpClient.retryOnConnectionFailure(true);
- httpClient.hostnameVerifier(trustManager.getHostnameVerifier(OkHostnameVerifier.INSTANCE));
-
- httpClient.dispatcher(dispatcher);
- if (!Proxy.NO_PROXY.equals(proxy)) {
- httpClient.proxy(proxy);
-
- if (appPreferences.getProxyCredentials() &&
- !TextUtils.isEmpty(appPreferences.getProxyUsername()) &&
- !TextUtils.isEmpty(appPreferences.getProxyPassword())) {
- httpClient.proxyAuthenticator(new HttpAuthenticator(
- Credentials.basic(
- appPreferences.getProxyUsername(),
- appPreferences.getProxyPassword(),
- StandardCharsets.UTF_8),
- "Proxy-Authorization"));
- }
- }
-
- httpClient.addInterceptor(new HeadersInterceptor());
-
- if (BuildConfig.DEBUG && !context.getResources().getBoolean(R.bool.nc_is_debug)) {
- HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
- loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
- loggingInterceptor.redactHeader("Authorization");
- loggingInterceptor.redactHeader("Proxy-Authorization");
- httpClient.addInterceptor(loggingInterceptor);
- } else if (context.getResources().getBoolean(R.bool.nc_is_debug)) {
- HttpLoggingInterceptor.Logger fileLogger =
- s -> LoggingUtils.INSTANCE.writeLogEntryToFile(context, s);
- HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(fileLogger);
- loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
- loggingInterceptor.redactHeader("Authorization");
- loggingInterceptor.redactHeader("Proxy-Authorization");
- httpClient.addInterceptor(loggingInterceptor);
- }
-
- return httpClient.build();
- }
-
- public static class HeadersInterceptor implements Interceptor {
-
- @NonNull
- @Override
- public Response intercept(@NonNull Chain chain) throws IOException {
- Request original = chain.request();
- Request request = original.newBuilder()
- .header("User-Agent", ApiUtils.getUserAgent())
- .header("Accept", "application/json")
- .header("OCS-APIRequest", "true")
- .header("ngrok-skip-browser-warning", "true")
- .method(original.method(), original.body())
- .build();
-
- return chain.proceed(request);
- }
- }
-
- public static class HttpAuthenticator implements Authenticator {
-
- private String credentials;
- private String authenticatorType;
-
- public HttpAuthenticator(@NonNull String credentials, @NonNull String authenticatorType) {
- this.credentials = credentials;
- this.authenticatorType = authenticatorType;
- }
-
- @Nullable
- @Override
- public Request authenticate(@Nullable Route route, @NonNull Response response) {
- if (response.request().header(authenticatorType) != null) {
- return null;
- }
-
- Response countedResponse = response;
-
- int attemptsCount = 0;
-
- while ((countedResponse = countedResponse.priorResponse()) != null) {
- attemptsCount++;
- if (attemptsCount == 3) {
- return null;
- }
- }
-
- return response.request().newBuilder()
- .header(authenticatorType, credentials)
- .build();
- }
- }
-
- private class GetProxyRunnable implements Runnable {
- private volatile Proxy proxy;
- private AppPreferences appPreferences;
-
- GetProxyRunnable(AppPreferences appPreferences) {
- this.appPreferences = appPreferences;
- }
-
- @Override
- public void run() {
- if (Proxy.Type.valueOf(appPreferences.getProxyType()) == Proxy.Type.SOCKS) {
- proxy = new Proxy(Proxy.Type.valueOf(appPreferences.getProxyType()),
- InetSocketAddress.createUnresolved(appPreferences.getProxyHost(), Integer.parseInt(
- appPreferences.getProxyPort())));
- } else {
- proxy = new Proxy(Proxy.Type.valueOf(appPreferences.getProxyType()),
- new InetSocketAddress(appPreferences.getProxyHost(),
- Integer.parseInt(appPreferences.getProxyPort())));
- }
- }
-
- Proxy getProxyValue() {
- return proxy;
- }
- }
-}
diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.kt b/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.kt
new file mode 100644
index 0000000000..ce023c7452
--- /dev/null
+++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.kt
@@ -0,0 +1,296 @@
+/*
+ * Nextcloud Talk application
+ *
+ * @author Mario Danic
+ * Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package com.nextcloud.talk.dagger.modules
+
+import android.content.Context
+import android.text.TextUtils
+import android.util.Log
+import com.github.aurae.retrofit2.LoganSquareConverterFactory
+import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
+import com.nextcloud.talk.BuildConfig
+import com.nextcloud.talk.R
+import com.nextcloud.talk.api.NcApi
+import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
+import com.nextcloud.talk.users.UserManager
+import com.nextcloud.talk.utils.ApiUtils.userAgent
+import com.nextcloud.talk.utils.LoggingUtils.writeLogEntryToFile
+import com.nextcloud.talk.utils.preferences.AppPreferences
+import com.nextcloud.talk.utils.ssl.KeyManager
+import com.nextcloud.talk.utils.ssl.SSLSocketFactoryCompat
+import com.nextcloud.talk.utils.ssl.TrustManager
+import dagger.Module
+import dagger.Provides
+import io.reactivex.schedulers.Schedulers
+import kotlinx.serialization.json.Json
+import okhttp3.Authenticator
+import okhttp3.Cache
+import okhttp3.Credentials.basic
+import okhttp3.Dispatcher
+import okhttp3.Interceptor
+import okhttp3.Interceptor.Chain
+import okhttp3.JavaNetCookieJar
+import okhttp3.MediaType.Companion.toMediaType
+import okhttp3.OkHttpClient
+import okhttp3.Request
+import okhttp3.Response
+import okhttp3.Route
+import okhttp3.internal.tls.OkHostnameVerifier
+import okhttp3.logging.HttpLoggingInterceptor
+import retrofit2.Retrofit
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
+import java.io.IOException
+import java.net.CookieManager
+import java.net.InetSocketAddress
+import java.net.Proxy
+import java.nio.charset.StandardCharsets
+import java.security.KeyStore
+import java.security.KeyStoreException
+import java.security.NoSuchAlgorithmException
+import java.security.UnrecoverableKeyException
+import java.security.cert.CertificateException
+import java.util.concurrent.TimeUnit
+import javax.inject.Singleton
+import javax.net.ssl.KeyManagerFactory
+import javax.net.ssl.X509KeyManager
+import kotlin.concurrent.Volatile
+
+@Module(includes = [DatabaseModule::class])
+class RestModule(private val context: Context) {
+ @Singleton
+ @Provides
+ fun provideNcApi(retrofit: Retrofit): NcApi {
+ return retrofit.create(NcApi::class.java)
+ }
+
+ @Singleton
+ @Provides
+ fun provideProxy(appPreferences: AppPreferences): Proxy? {
+ return if (!TextUtils.isEmpty(appPreferences.getProxyType()) && "No proxy" != appPreferences.getProxyType() &&
+ !TextUtils.isEmpty(appPreferences.getProxyHost())
+ ) {
+ val getProxyRunnable = GetProxyRunnable(appPreferences)
+ val getProxyThread = Thread(getProxyRunnable)
+ getProxyThread.start()
+ try {
+ getProxyThread.join()
+ getProxyRunnable.proxyValue
+ } catch (e: InterruptedException) {
+ Log.e(TAG, "Failed to join the thread while getting proxy: " + e.localizedMessage)
+ Proxy.NO_PROXY
+ }
+ } else {
+ Proxy.NO_PROXY
+ }
+ }
+
+ @Singleton
+ @Provides
+ fun provideRetrofit(httpClient: OkHttpClient?): Retrofit {
+ val contentType = "application/json".toMediaType()
+
+ val retrofitBuilder = Retrofit.Builder()
+ .client(httpClient!!)
+ .baseUrl("https://nextcloud.com")
+ .addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
+ // .addConverterFactory(LoganSquareConverterFactory.create())
+ .addConverterFactory(Json.asConverterFactory(contentType));
+ return retrofitBuilder.build()
+ }
+
+ @Singleton
+ @Provides
+ fun provideTrustManager(): TrustManager {
+ return TrustManager()
+ }
+
+ @Singleton
+ @Provides
+ fun provideKeyManager(appPreferences: AppPreferences?, userManager: UserManager?): KeyManager? {
+ val keyStore: KeyStore?
+ try {
+ keyStore = KeyStore.getInstance("AndroidKeyStore")
+ keyStore.load(null)
+ val kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm())
+ kmf.init(keyStore, null)
+ val origKm = kmf.keyManagers[0] as X509KeyManager
+ return KeyManager(origKm, userManager, appPreferences)
+ } catch (e: KeyStoreException) {
+ Log.e(TAG, "KeyStoreException " + e.localizedMessage)
+ } catch (e: CertificateException) {
+ Log.e(TAG, "CertificateException " + e.localizedMessage)
+ } catch (e: NoSuchAlgorithmException) {
+ Log.e(TAG, "NoSuchAlgorithmException " + e.localizedMessage)
+ } catch (e: IOException) {
+ Log.e(TAG, "IOException " + e.localizedMessage)
+ } catch (e: UnrecoverableKeyException) {
+ Log.e(TAG, "UnrecoverableKeyException " + e.localizedMessage)
+ }
+ return null
+ }
+
+ @Singleton
+ @Provides
+ fun provideSslSocketFactoryCompat(keyManager: KeyManager?, trustManager: TrustManager?): SSLSocketFactoryCompat {
+ return SSLSocketFactoryCompat(keyManager, trustManager!!)
+ }
+
+ @Singleton
+ @Provides
+ fun provideCookieManager(): CookieManager {
+ return CookieManager()
+ }
+
+ @Singleton
+ @Provides
+ fun provideCache(): Cache {
+ val cacheSize = 128 * 1024 * 1024 // 128 MB
+ return Cache(sharedApplication!!.cacheDir, cacheSize.toLong())
+ }
+
+ @Singleton
+ @Provides
+ fun provideDispatcher(): Dispatcher {
+ val dispatcher = Dispatcher()
+ dispatcher.maxRequestsPerHost = 100
+ dispatcher.maxRequests = 100
+ return dispatcher
+ }
+
+ @Singleton
+ @Provides
+ fun provideHttpClient(
+ proxy: Proxy?,
+ appPreferences: AppPreferences,
+ trustManager: TrustManager,
+ sslSocketFactoryCompat: SSLSocketFactoryCompat?,
+ cache: Cache?,
+ cookieManager: CookieManager?,
+ dispatcher: Dispatcher?
+ ): OkHttpClient {
+ val httpClient = OkHttpClient.Builder()
+ httpClient.retryOnConnectionFailure(true)
+ httpClient.connectTimeout(45, TimeUnit.SECONDS)
+ httpClient.readTimeout(45, TimeUnit.SECONDS)
+ httpClient.writeTimeout(45, TimeUnit.SECONDS)
+ httpClient.cookieJar(JavaNetCookieJar(cookieManager!!))
+ httpClient.cache(cache)
+
+ // Trust own CA and all self-signed certs
+ httpClient.sslSocketFactory(sslSocketFactoryCompat!!, trustManager)
+ httpClient.retryOnConnectionFailure(true)
+ httpClient.hostnameVerifier(trustManager.getHostnameVerifier(OkHostnameVerifier))
+ httpClient.dispatcher(dispatcher!!)
+ if (Proxy.NO_PROXY != proxy) {
+ httpClient.proxy(proxy)
+ if (appPreferences.getProxyCredentials() &&
+ !TextUtils.isEmpty(appPreferences.getProxyUsername()) &&
+ !TextUtils.isEmpty(appPreferences.getProxyPassword())
+ ) {
+ httpClient.proxyAuthenticator(
+ HttpAuthenticator(
+ basic(
+ appPreferences.getProxyUsername(),
+ appPreferences.getProxyPassword(),
+ StandardCharsets.UTF_8
+ ),
+ "Proxy-Authorization"
+ )
+ )
+ }
+ }
+ httpClient.addInterceptor(HeadersInterceptor())
+ if (BuildConfig.DEBUG && !context.resources.getBoolean(R.bool.nc_is_debug)) {
+ val loggingInterceptor = HttpLoggingInterceptor()
+ loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
+ loggingInterceptor.redactHeader("Authorization")
+ loggingInterceptor.redactHeader("Proxy-Authorization")
+ httpClient.addInterceptor(loggingInterceptor)
+ } else if (context.resources.getBoolean(R.bool.nc_is_debug)) {
+ val fileLogger = HttpLoggingInterceptor.Logger { s: String? -> writeLogEntryToFile(context, s!!) }
+ val loggingInterceptor = HttpLoggingInterceptor(fileLogger)
+ loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
+ loggingInterceptor.redactHeader("Authorization")
+ loggingInterceptor.redactHeader("Proxy-Authorization")
+ httpClient.addInterceptor(loggingInterceptor)
+ }
+ return httpClient.build()
+ }
+
+ class HeadersInterceptor : Interceptor {
+ @Throws(IOException::class)
+ override fun intercept(chain: Chain): Response {
+ val original: Request = chain.request()
+ val request = original.newBuilder()
+ .header("User-Agent", userAgent)
+ .header("Accept", "application/json")
+ .header("OCS-APIRequest", "true")
+ .header("ngrok-skip-browser-warning", "true")
+ .method(original.method, original.body)
+ .build()
+ return chain.proceed(request)
+ }
+ }
+
+ class HttpAuthenticator(private val credentials: String, private val authenticatorType: String) : Authenticator {
+ override fun authenticate(route: Route?, response: Response): Request? {
+ if (response.request.header(authenticatorType) != null) {
+ return null
+ }
+ var countedResponse = response
+ var attemptsCount = 0
+ while (countedResponse.priorResponse.also { countedResponse = it!! } != null) {
+ attemptsCount++
+ if (attemptsCount == 3) {
+ return null
+ }
+ }
+ return response.request.newBuilder()
+ .header(authenticatorType, credentials)
+ .build()
+ }
+ }
+
+ private inner class GetProxyRunnable(private val appPreferences: AppPreferences) : Runnable {
+ @Volatile
+ var proxyValue: Proxy? = null
+ private set
+
+ override fun run() {
+ proxyValue = if (Proxy.Type.valueOf(appPreferences.getProxyType()) == Proxy.Type.SOCKS) {
+ Proxy(
+ Proxy.Type.valueOf(appPreferences.getProxyType()),
+ InetSocketAddress.createUnresolved(
+ appPreferences.getProxyHost(),
+ appPreferences.getProxyPort().toInt()
+ )
+ )
+ } else {
+ Proxy(
+ Proxy.Type.valueOf(appPreferences.getProxyType()),
+ InetSocketAddress(appPreferences.getProxyHost(), appPreferences.getProxyPort().toInt())
+ )
+ }
+ }
+ }
+
+ companion object {
+ private const val TAG = "RestModule"
+ }
+}
diff --git a/app/src/main/java/com/nextcloud/talk/data/user/model/User.kt b/app/src/main/java/com/nextcloud/talk/data/user/model/User.kt
index 4ce808e3e7..d529923f14 100644
--- a/app/src/main/java/com/nextcloud/talk/data/user/model/User.kt
+++ b/app/src/main/java/com/nextcloud/talk/data/user/model/User.kt
@@ -26,9 +26,11 @@ import com.nextcloud.talk.models.json.capabilities.ServerVersion
import com.nextcloud.talk.models.json.push.PushConfigurationState
import com.nextcloud.talk.utils.ApiUtils
import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.Serializable
import java.lang.Boolean.FALSE
@Parcelize
+@Serializable
data class User(
var id: Long? = null,
var userId: String? = null,
diff --git a/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.kt b/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.kt
index d4caf8a6da..4dc95b8fd5 100644
--- a/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.kt
@@ -22,16 +22,16 @@
package com.nextcloud.talk.models
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ExternalSignalingServer(
- @JsonField(name = ["externalSignalingServer"])
+ @SerialName("externalSignalingServer")
var externalSignalingServer: String? = null,
- @JsonField(name = ["externalSignalingTicket"])
+ @SerialName("externalSignalingTicket")
var externalSignalingTicket: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/RingtoneSettings.kt b/app/src/main/java/com/nextcloud/talk/models/RingtoneSettings.kt
index 004a48501c..933cf44668 100644
--- a/app/src/main/java/com/nextcloud/talk/models/RingtoneSettings.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/RingtoneSettings.kt
@@ -23,19 +23,19 @@ package com.nextcloud.talk.models
import android.net.Uri
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.converters.UriTypeConverter
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class RingtoneSettings(
- @JsonField(name = ["ringtoneUri"], typeConverter = UriTypeConverter::class)
- var ringtoneUri: Uri? = null,
- @JsonField(name = ["ringtoneName"])
+ @SerialName("ringtoneUri", typeConverter = UriTypeConverter::class)
+ // var ringtoneUri: Uri? = null,
+ @SerialName("ringtoneName")
var ringtoneName: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
- constructor() : this(null, null)
+ constructor() : this(null)
}
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.kt
index 9473b31bca..1d4e5b8a17 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.kt
@@ -24,17 +24,15 @@
package com.nextcloud.talk.models.json.autocomplete
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class AutocompleteOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
var data: List?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOverall.kt
index 4976a219d6..3bed4cb28b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOverall.kt
@@ -22,14 +22,13 @@
package com.nextcloud.talk.models.json.autocomplete
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class AutocompleteOverall(
- @JsonField(name = ["ocs"])
var ocs: AutocompleteOCS?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteUser.kt b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteUser.kt
index 6e66c9d7b9..f796fe35b7 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteUser.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteUser.kt
@@ -22,18 +22,15 @@
package com.nextcloud.talk.models.json.autocomplete
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class AutocompleteUser(
- @JsonField(name = ["id"])
var id: String?,
- @JsonField(name = ["label"])
var label: String?,
- @JsonField(name = ["source"])
var source: String?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.kt
index 23026a8ad9..be6bc461ef 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.kt
@@ -24,26 +24,26 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class Capabilities(
- @JsonField(name = ["core"])
+ @SerialName("core")
var coreCapability: CoreCapability?,
- @JsonField(name = ["spreed"])
+ @SerialName("spreed")
var spreedCapability: SpreedCapability?,
- @JsonField(name = ["notifications"])
+ @SerialName("notifications")
var notificationsCapability: NotificationsCapability?,
- @JsonField(name = ["theming"])
+ @SerialName("theming")
var themingCapability: ThemingCapability?,
- @JsonField(name = ["external"])
+ @SerialName("external")
var externalCapability: HashMap>?,
- @JsonField(name = ["provisioning_api"])
+ @SerialName("provisioning_api")
var provisioningCapability: ProvisioningCapability?,
- @JsonField(name = ["user_status"])
+ @SerialName("user_status")
var userStatusCapability: UserStatusCapability?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesList.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesList.kt
index 1b0560afa6..38a7a01b0b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesList.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesList.kt
@@ -22,16 +22,16 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class CapabilitiesList(
- @JsonField(name = ["version"])
+ @SerialName("version")
var serverVersion: ServerVersion?,
- @JsonField(name = ["capabilities"])
+ @SerialName("capabilities")
var capabilities: Capabilities?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOCS.kt
index fffe8a9aff..82fc430a0f 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOCS.kt
@@ -24,17 +24,17 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class CapabilitiesOCS(
- @JsonField(name = ["meta"])
+ @SerialName("meta")
var meta: GenericMeta?,
- @JsonField(name = ["data"])
+ @SerialName("data")
var data: CapabilitiesList?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOverall.kt
index 636846e70a..764b3e477c 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOverall.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class CapabilitiesOverall(
- @JsonField(name = ["ocs"])
+ @SerialName("ocs")
var ocs: CapabilitiesOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CoreCapability.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CoreCapability.kt
index 09a1ad7a55..92e3e18694 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CoreCapability.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CoreCapability.kt
@@ -20,22 +20,20 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
-import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
+import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
@Serializable
data class CoreCapability(
- @JsonField(name = ["pollinterval"])
+ @SerialName("pollinterval")
var pollInterval: Int?,
- @JsonField(name = ["webdav-root"])
+ @SerialName("webdav-root")
var webdavRoot: String?,
- @JsonField(name = ["reference-api"])
+ @SerialName("reference-api")
var referenceApi: String?,
- @JsonField(name = ["reference-regex"])
+ @SerialName("reference-regex")
var referenceRegex: String?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.kt
index e32fe0bd7c..c57c889bfc 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.kt
@@ -22,16 +22,14 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
-import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
+import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
@Serializable
data class NotificationsCapability(
- @JsonField(name = ["ocs-endpoints"])
+ @SerialName("ocs-endpoints")
var features: List?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ProvisioningCapability.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ProvisioningCapability.kt
index 637ad73840..baeb47baed 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ProvisioningCapability.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ProvisioningCapability.kt
@@ -22,16 +22,14 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
-import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
+import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
@Serializable
data class ProvisioningCapability(
- @JsonField(name = ["AccountPropertyScopesVersion"])
+ @SerialName("AccountPropertyScopesVersion")
var accountPropertyScopesVersion: Int?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/RoomCapabilitiesOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/RoomCapabilitiesOCS.kt
index 193dff5292..11114e6dc0 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/RoomCapabilitiesOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/RoomCapabilitiesOCS.kt
@@ -24,17 +24,15 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class RoomCapabilitiesOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
var data: SpreedCapability?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/RoomCapabilitiesOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/RoomCapabilitiesOverall.kt
index aa7234929d..5b59ccce62 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/RoomCapabilitiesOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/RoomCapabilitiesOverall.kt
@@ -22,14 +22,13 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class RoomCapabilitiesOverall(
- @JsonField(name = ["ocs"])
var ocs: RoomCapabilitiesOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ServerVersion.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ServerVersion.kt
index 0685e06900..f77113aa85 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ServerVersion.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ServerVersion.kt
@@ -20,20 +20,17 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ServerVersion(
- @JsonField(name = ["major"])
var major: Int = 0,
- @JsonField(name = ["minor"])
var minor: Int = 0,
- @JsonField(name = ["micro"])
var micro: Int = 0,
- @JsonField(name = ["string"])
+ @SerialName("string")
var versionString: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.kt
index 9fa43fcbb0..d8ece39524 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.kt
@@ -22,21 +22,19 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
import kotlinx.parcelize.RawValue
import kotlinx.serialization.Contextual
-import kotlinx.serialization.Serializable
@Parcelize
-@JsonObject
@Serializable
data class SpreedCapability(
- @JsonField(name = ["features"])
+ @SerialName("features")
var features: List?,
- @JsonField(name = ["config"])
+ @SerialName("config")
var config: HashMap<
String,
HashMap<
@@ -46,7 +44,7 @@ data class SpreedCapability(
Any
>
>?,
- @JsonField(name = ["version"])
+ @SerialName("version")
var version: String
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ThemingCapability.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ThemingCapability.kt
index 35d78dd24d..9549e6ebb1 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ThemingCapability.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/ThemingCapability.kt
@@ -22,38 +22,31 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
-import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
+import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
@Serializable
data class ThemingCapability(
- @JsonField(name = ["name"])
var name: String?,
- @JsonField(name = ["url"])
var url: String?,
- @JsonField(name = ["slogan"])
var slogan: String?,
- @JsonField(name = ["color"])
var color: String?,
- @JsonField(name = ["color-text"])
+ @SerialName("color-text")
var colorText: String?,
- @JsonField(name = ["color-element"])
+ @SerialName("color-element")
var colorElement: String?,
- @JsonField(name = ["color-element-bright"])
+ @SerialName("color-element-bright")
var colorElementBright: String?,
- @JsonField(name = ["color-element-dark"])
+ @SerialName("color-element-dark")
var colorElementDark: String?,
- @JsonField(name = ["logo"])
var logo: String?,
- @JsonField(name = ["background"])
+ @SerialName("background")
var background: String?,
- @JsonField(name = ["background-plain"])
+ @SerialName("background-plain")
var backgroundPlain: Boolean?,
- @JsonField(name = ["background-default"])
+ @SerialName("background-default")
var backgroundDefault: Boolean?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/UserStatusCapability.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/UserStatusCapability.kt
index 47f100bf34..b46a9ee21b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/UserStatusCapability.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/UserStatusCapability.kt
@@ -22,18 +22,15 @@
package com.nextcloud.talk.models.json.capabilities
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
-import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
+import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
@Serializable
data class UserStatusCapability(
- @JsonField(name = ["enabled"])
var enabled: Boolean,
- @JsonField(name = ["supports_emoji"])
+ @SerialName("supports_emoji")
var supportsEmoji: Boolean
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.kt
index dc285504c7..a0f303db3f 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.kt
@@ -28,24 +28,26 @@ package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
import android.text.TextUtils
import android.util.Log
-import com.bluelinelabs.logansquare.annotation.JsonField
+import kotlinx.serialization.SerialName
import com.bluelinelabs.logansquare.annotation.JsonIgnore
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.models.json.chat.ChatUtils.Companion.getParsedMessage
import com.nextcloud.talk.models.json.converters.EnumSystemMessageTypeConverter
+import com.nextcloud.talk.models.json.converters.KotlinxJodaTimeConverter
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.CapabilitiesUtil
import com.stfalcon.chatkit.commons.models.IUser
import com.stfalcon.chatkit.commons.models.MessageContentType
import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.Transient
import java.security.MessageDigest
import java.util.Date
@Parcelize
-@JsonObject
+@Serializable
data class ChatMessage(
@JsonIgnore
var isGrouped: Boolean = false,
@@ -65,72 +67,74 @@ data class ChatMessage(
@JsonIgnore
var isDeleted: Boolean = false,
- @JsonField(name = ["id"])
+ @SerialName("id")
var jsonMessageId: Int = 0,
@JsonIgnore
var previousMessageId: Int = -1,
- @JsonField(name = ["token"])
- var token: String? = null,
+ @SerialName("token")
+ var token: String = "",
// guests or users
- @JsonField(name = ["actorType"])
+ @SerialName("actorType")
var actorType: String? = null,
- @JsonField(name = ["actorId"])
+ @SerialName("actorId")
var actorId: String? = null,
// send when crafting a message
- @JsonField(name = ["actorDisplayName"])
+ @SerialName("actorDisplayName")
var actorDisplayName: String? = null,
- @JsonField(name = ["timestamp"])
+ @SerialName("timestamp")
var timestamp: Long = 0,
// send when crafting a message, max 1000 lines
- @JsonField(name = ["message"])
+ @SerialName("message")
var message: String? = null,
- @JsonField(name = ["messageParameters"])
+ @SerialName("messageParameters")
var messageParameters: HashMap>? = null,
- @JsonField(name = ["systemMessage"], typeConverter = EnumSystemMessageTypeConverter::class)
+ @SerialName("systemMessage")
+ // @Serializable(with = EnumSystemMessageTypeConverter::class)
var systemMessageType: SystemMessageType? = null,
- @JsonField(name = ["isReplyable"])
+ @SerialName("isReplyable")
var replyable: Boolean = false,
- @JsonField(name = ["parent"])
+ @SerialName("parent")
var parentMessage: ChatMessage? = null,
+ @Transient
var readStatus: Enum = ReadStatus.NONE,
- @JsonField(name = ["messageType"])
+ @SerialName("messageType")
var messageType: String? = null,
- @JsonField(name = ["reactions"])
+ @SerialName("reactions")
var reactions: LinkedHashMap? = null,
- @JsonField(name = ["reactionsSelf"])
+ @SerialName("reactionsSelf")
var reactionsSelf: ArrayList? = null,
- @JsonField(name = ["expirationTimestamp"])
+ @SerialName("expirationTimestamp")
var expirationTimestamp: Int = 0,
- @JsonField(name = ["markdown"])
+ @SerialName("markdown")
var renderMarkdown: Boolean? = null,
- @JsonField(name = ["lastEditActorDisplayName"])
+ @SerialName("lastEditActorDisplayName")
var lastEditActorDisplayName: String? = null,
- @JsonField(name = ["lastEditActorId"])
+ @SerialName("lastEditActorId")
var lastEditActorId: String? = null,
- @JsonField(name = ["lastEditActorType"])
+ @SerialName("lastEditActorType")
var lastEditActorType: String? = null,
- @JsonField(name = ["lastEditTimestamp"])
+ @SerialName("lastEditTimestamp")
var lastEditTimestamp: Long = 0,
var isDownloadingVoiceMessage: Boolean = false,
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.kt
index 5cb67f1a7f..6823a2f3a4 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.kt
@@ -22,17 +22,17 @@
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ChatOCS(
- @JsonField(name = ["meta"])
+ @SerialName("meta")
var meta: GenericMeta?,
- @JsonField(name = ["data"])
+ @SerialName("data")
var data: List? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCSSingleMessage.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCSSingleMessage.kt
index eb12998ae3..f0c37da10d 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCSSingleMessage.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCSSingleMessage.kt
@@ -22,17 +22,17 @@
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ChatOCSSingleMessage(
- @JsonField(name = ["meta"])
+ @SerialName("meta")
var meta: GenericMeta?,
- @JsonField(name = ["data"])
+ @SerialName("data")
var data: ChatMessage? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverall.kt
index 9378f1c5f3..eb3c94dd57 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverall.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ChatOverall(
- @JsonField(name = ["ocs"])
+ @SerialName("ocs")
var ocs: ChatOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverallSingleMessage.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverallSingleMessage.kt
index f0aca47b99..6ec53eb98b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverallSingleMessage.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverallSingleMessage.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ChatOverallSingleMessage(
- @JsonField(name = ["ocs"])
+ @SerialName("ocs")
var ocs: ChatOCSSingleMessage? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOCS.kt
index 417426d270..fc316b89fc 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOCS.kt
@@ -22,15 +22,15 @@
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import java.util.HashMap
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ChatShareOCS(
- @JsonField(name = ["data"])
+ @SerialName("data")
var data: HashMap? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverall.kt
index 2e0612ced7..d17d53e8a6 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverall.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ChatShareOverall(
- @JsonField(name = ["ocs"])
+ @SerialName("ocs")
var ocs: ChatShareOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverviewOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverviewOCS.kt
index cdae476201..77daf5c82b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverviewOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverviewOCS.kt
@@ -22,19 +22,19 @@
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.AnyParceler
import kotlinx.parcelize.Parcelize
import kotlinx.parcelize.TypeParceler
import java.util.HashMap
@Parcelize
-@JsonObject
+@Serializable
@TypeParceler
data class ChatShareOverviewOCS(
- @JsonField(name = ["data"])
- var data: HashMap>? = null
+ @SerialName("data")
+ var data: HashMap>? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverviewOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverviewOverall.kt
index 93da5ed48f..e41b618668 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverviewOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatShareOverviewOverall.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ChatShareOverviewOverall(
- @JsonField(name = ["ocs"])
+ @SerialName("ocs")
var ocs: ChatShareOverviewOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.kt b/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.kt
index 97ec35660f..0eebfd7fd0 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.kt
@@ -26,8 +26,8 @@
package com.nextcloud.talk.models.json.conversations
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.models.domain.ConversationModel
import com.nextcloud.talk.models.json.chat.ChatMessage
@@ -44,129 +44,126 @@ import com.nextcloud.talk.utils.CapabilitiesUtil
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class Conversation(
- @JsonField(name = ["id"])
+ @SerialName("id")
var roomId: String? = null,
- @JsonField(name = ["token"])
+ @SerialName("token")
var token: String? = null,
- @JsonField(name = ["name"])
+ @SerialName("name")
var name: String? = null,
- @JsonField(name = ["displayName"])
+ @SerialName("displayName")
var displayName: String? = null,
- @JsonField(name = ["description"])
+ @SerialName("description")
var description: String? = null,
- @JsonField(name = ["type"], typeConverter = EnumRoomTypeConverter::class)
+ @SerialName("type", typeConverter = EnumRoomTypeConverter::class)
var type: ConversationType? = null,
- @JsonField(name = ["lastPing"])
+ @SerialName("lastPing")
var lastPing: Long = 0,
- @JsonField(name = ["participantType"], typeConverter = EnumParticipantTypeConverter::class)
+ @SerialName("participantType", typeConverter = EnumParticipantTypeConverter::class)
var participantType: ParticipantType? = null,
- @JsonField(name = ["hasPassword"])
+ @SerialName("hasPassword")
var hasPassword: Boolean = false,
- @JsonField(name = ["sessionId"])
+ @SerialName("sessionId")
var sessionId: String? = null,
- @JsonField(name = ["actorId"])
+ @SerialName("actorId")
var actorId: String? = null,
- @JsonField(name = ["actorType"])
+ @SerialName("actorType")
var actorType: String? = null,
var password: String? = null,
- @JsonField(name = ["isFavorite"])
+ @SerialName("isFavorite")
var favorite: Boolean = false,
- @JsonField(name = ["lastActivity"])
+ @SerialName("lastActivity")
var lastActivity: Long = 0,
- @JsonField(name = ["unreadMessages"])
+ @SerialName("unreadMessages")
var unreadMessages: Int = 0,
- @JsonField(name = ["unreadMention"])
+ @SerialName("unreadMention")
var unreadMention: Boolean = false,
- @JsonField(name = ["lastMessage"])
+ @SerialName("lastMessage")
var lastMessage: ChatMessage? = null,
- @JsonField(name = ["objectType"], typeConverter = ConversationObjectTypeConverter::class)
+ @SerialName("objectType", typeConverter = ConversationObjectTypeConverter::class)
var objectType: ObjectType? = null,
- @JsonField(name = ["notificationLevel"], typeConverter = EnumNotificationLevelConverter::class)
+ @SerialName("notificationLevel", typeConverter = EnumNotificationLevelConverter::class)
var notificationLevel: NotificationLevel? = null,
- @JsonField(name = ["readOnly"], typeConverter = EnumReadOnlyConversationConverter::class)
+ @SerialName("readOnly", typeConverter = EnumReadOnlyConversationConverter::class)
var conversationReadOnlyState: ConversationReadOnlyState? = null,
- @JsonField(name = ["lobbyState"], typeConverter = EnumLobbyStateConverter::class)
+ @SerialName("lobbyState", typeConverter = EnumLobbyStateConverter::class)
var lobbyState: LobbyState? = null,
- @JsonField(name = ["lobbyTimer"])
+ @SerialName("lobbyTimer")
var lobbyTimer: Long? = null,
- @JsonField(name = ["lastReadMessage"])
+ @SerialName("lastReadMessage")
var lastReadMessage: Int = 0,
- @JsonField(name = ["hasCall"])
+ @SerialName("hasCall")
var hasCall: Boolean = false,
- @JsonField(name = ["callFlag"])
+ @SerialName("callFlag")
var callFlag: Int = 0,
- @JsonField(name = ["canStartCall"])
+ @SerialName("canStartCall")
var canStartCall: Boolean = false,
- @JsonField(name = ["canLeaveConversation"])
+ @SerialName("canLeaveConversation")
var canLeaveConversation: Boolean? = null,
- @JsonField(name = ["canDeleteConversation"])
+ @SerialName("canDeleteConversation")
var canDeleteConversation: Boolean? = null,
- @JsonField(name = ["unreadMentionDirect"])
+ @SerialName("unreadMentionDirect")
var unreadMentionDirect: Boolean? = null,
- @JsonField(name = ["notificationCalls"])
+ @SerialName("notificationCalls")
var notificationCalls: Int? = null,
- @JsonField(name = ["permissions"])
+ @SerialName("permissions")
var permissions: Int = 0,
- @JsonField(name = ["messageExpiration"])
+ @SerialName("messageExpiration")
var messageExpiration: Int = 0,
- @JsonField(name = ["status"])
+ @SerialName("status")
var status: String? = null,
- @JsonField(name = ["statusIcon"])
+ @SerialName("statusIcon")
var statusIcon: String? = null,
- @JsonField(name = ["statusMessage"])
+ @SerialName("statusMessage")
var statusMessage: String? = null,
- @JsonField(name = ["statusClearAt"])
+ @SerialName("statusClearAt")
var statusClearAt: Long? = 0,
- @JsonField(name = ["callRecording"])
+ @SerialName("callRecording")
var callRecording: Int = 0,
- @JsonField(name = ["avatarVersion"])
+ @SerialName("avatarVersion")
var avatarVersion: String? = null,
// Be aware that variables with "is" at the beginning will lead to the error:
- // "@JsonField annotation can only be used on private fields if both getter and setter are present."
+ // "//@JsonField annotation can only be used on private fields if both getter and setter are present."
// Instead, name it with "has" at the beginning: isCustomAvatar -> hasCustomAvatar
- @JsonField(name = ["isCustomAvatar"])
+ @SerialName("isCustomAvatar")
var hasCustomAvatar: Boolean? = null,
- @JsonField(name = ["callStartTime"])
var callStartTime: Long? = null,
- @JsonField(name = ["recordingConsent"])
+ @SerialName("recordingConsent")
var recordingConsentRequired: Int = 0,
- @JsonField(name = ["remoteServer"])
var remoteServer: String? = null,
- @JsonField(name = ["remoteToken"])
var remoteToken: String? = null
) : Parcelable {
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomOCS.kt
index 6a7eb5aaa2..abe292ebb6 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomOCS.kt
@@ -22,17 +22,15 @@
package com.nextcloud.talk.models.json.conversations
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class RoomOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
var data: Conversation? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomOverall.kt
index ef5574c849..3d0cbf257d 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomOverall.kt
@@ -22,14 +22,13 @@
package com.nextcloud.talk.models.json.conversations
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class RoomOverall(
- @JsonField(name = ["ocs"])
var ocs: RoomOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOCS.kt
index 8672b99bd9..f35abf9c5b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOCS.kt
@@ -22,17 +22,15 @@
package com.nextcloud.talk.models.json.conversations
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class RoomsOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
var data: List? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOverall.kt
index 83c6de9b41..ebe104d4aa 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOverall.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.conversations
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class RoomsOverall(
- @JsonField(name = ["ocs"])
+ @SerialName("ocs")
var ocs: RoomsOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordData.kt b/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordData.kt
index b11fb201d5..993c113d94 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordData.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordData.kt
@@ -21,14 +21,13 @@
package com.nextcloud.talk.models.json.conversations.password
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
-@JsonObject
+@Serializable
@Parcelize
data class PasswordData(
- @JsonField(name = ["message"])
var message: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordOCS.kt
index d2c68ae15f..d7e22bd0ba 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordOCS.kt
@@ -21,18 +21,15 @@
package com.nextcloud.talk.models.json.conversations.password
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class PasswordOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta? = null,
-
- @JsonField(name = ["data"])
var data: PasswordData? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordOverall.kt
index e91e259abb..9428467095 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/password/PasswordOverall.kt
@@ -21,14 +21,13 @@
package com.nextcloud.talk.models.json.conversations.password
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class PasswordOverall(
- @JsonField(name = ["ocs"])
var ocs: PasswordOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/converters/KotlinxJodaTimeConverter.kt b/app/src/main/java/com/nextcloud/talk/models/json/converters/KotlinxJodaTimeConverter.kt
new file mode 100644
index 0000000000..efb539fb3d
--- /dev/null
+++ b/app/src/main/java/com/nextcloud/talk/models/json/converters/KotlinxJodaTimeConverter.kt
@@ -0,0 +1,22 @@
+package com.nextcloud.talk.models.json.converters
+
+import kotlinx.serialization.KSerializer
+import kotlinx.serialization.descriptors.PrimitiveKind
+import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
+import kotlinx.serialization.descriptors.SerialDescriptor
+import kotlinx.serialization.encoding.Decoder
+import kotlinx.serialization.encoding.Encoder
+import org.joda.time.DateTime
+
+object KotlinxJodaTimeConverter : KSerializer {
+ override val descriptor: SerialDescriptor =
+ PrimitiveSerialDescriptor("DateTime", PrimitiveKind.STRING)
+
+ override fun serialize(encoder: Encoder, value: DateTime) {
+ encoder.encodeString(value.toString())
+ }
+
+ override fun deserialize(decoder: Decoder): DateTime =
+ DateTime.parse(decoder.decodeString())
+
+}
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericMeta.kt b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericMeta.kt
index 4d145d6bf8..b2fd344d64 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericMeta.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericMeta.kt
@@ -22,18 +22,20 @@
package com.nextcloud.talk.models.json.generic
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.SerialName
@Parcelize
-@JsonObject(serializeNullObjects = true)
+// @Serializable(serializeNullObjects = true)
+@Serializable
data class GenericMeta(
- @JsonField(name = ["status"])
+ @SerialName("status")
var status: String? = null,
- @JsonField(name = ["statuscode"])
+ @SerialName("statuscode")
var statusCode: Int = 0,
- @JsonField(name = ["message"])
+ @SerialName("message")
var message: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOCS.kt
index b3cc3361a3..c9fefbcda0 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOCS.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.generic
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class GenericOCS(
- @JsonField(name = ["meta"])
+ @SerialName("meta")
var meta: GenericMeta? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOverall.kt
index 2cfaeaa75d..94e5c72133 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOverall.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.generic
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class GenericOverall(
- @JsonField(name = ["ocs"])
+ @SerialName("ocs")
var ocs: GenericOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/generic/Status.kt b/app/src/main/java/com/nextcloud/talk/models/json/generic/Status.kt
index 0e2e464028..ab2d08c6db 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/generic/Status.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/generic/Status.kt
@@ -22,32 +22,32 @@
package com.nextcloud.talk.models.json.generic
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class Status(
- @JsonField(name = ["installed"])
+ @SerialName("installed")
var installed: Boolean = false,
- @JsonField(name = ["maintenance"])
+ @SerialName("maintenance")
var maintenance: Boolean = false,
- @JsonField(name = ["upgrade"])
+ @SerialName("upgrade")
var needsUpgrade: Boolean = false,
- @JsonField(name = ["version"])
+ @SerialName("version")
var version: String? = null,
- @JsonField(name = ["versionstring"])
+ @SerialName("versionstring")
var versionString: String? = null,
- @JsonField(name = ["edition"])
+ @SerialName("edition")
var edition: String? = null,
- @JsonField(name = ["productname"])
+ @SerialName("productname")
var productName: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCard.kt b/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCard.kt
index a90603849a..b9815e4789 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCard.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCard.kt
@@ -20,18 +20,18 @@
package com.nextcloud.talk.models.json.hovercard
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class HoverCard(
- @JsonField(name = ["userId"])
+ @SerialName("userId")
var userId: String?,
- @JsonField(name = ["displayName"])
+ @SerialName("displayName")
var displayName: String?,
- @JsonField(name = ["actions"])
+ @SerialName("actions")
var actions: List?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardAction.kt b/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardAction.kt
index 9d4b60fdc7..696a450630 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardAction.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardAction.kt
@@ -20,20 +20,20 @@
package com.nextcloud.talk.models.json.hovercard
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class HoverCardAction(
- @JsonField(name = ["title"])
+ @SerialName("title")
var title: String?,
- @JsonField(name = ["icon"])
+ @SerialName("icon")
var icon: String?,
- @JsonField(name = ["hyperlink"])
+ @SerialName("hyperlink")
var hyperlink: String?,
- @JsonField(name = ["appId"])
+ @SerialName("appId")
var appId: String?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardOCS.kt
index 19083c657f..09d7dfd440 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardOCS.kt
@@ -23,17 +23,17 @@
package com.nextcloud.talk.models.json.hovercard
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class HoverCardOCS(
- @JsonField(name = ["meta"])
+ @SerialName("meta")
var meta: GenericMeta?,
- @JsonField(name = ["data"])
+ @SerialName("data")
var data: HoverCard?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardOverall.kt
index 3e073d2fd6..5fcbe7d301 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/hovercard/HoverCardOverall.kt
@@ -19,12 +19,11 @@
*/
package com.nextcloud.talk.models.json.hovercard
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
-@JsonObject
+@Serializable
data class HoverCardOverall(
- @JsonField(name = ["ocs"])
var ocs: HoverCardOCS?
) {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/invitation/Invitation.kt b/app/src/main/java/com/nextcloud/talk/models/json/invitation/Invitation.kt
index 56fbc2373d..60ac130bde 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/invitation/Invitation.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/invitation/Invitation.kt
@@ -20,34 +20,23 @@
package com.nextcloud.talk.models.json.invitation
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class Invitation(
- @JsonField(name = ["id"])
var id: Int = 0,
- @JsonField(name = ["userId"])
var userId: String? = null,
- @JsonField(name = ["state"])
var state: Int = 0,
- @JsonField(name = ["localRoomId"])
var localRoomId: Int = 0,
- @JsonField(name = ["accessToken"])
var accessToken: String? = null,
- @JsonField(name = ["remoteServerUrl"])
var remoteServerUrl: String? = null,
- @JsonField(name = ["remoteToken"])
var remoteToken: String? = null,
- @JsonField(name = ["remoteAttendeeId"])
var remoteAttendeeId: Int = 0,
- @JsonField(name = ["inviterCloudId"])
var inviterCloudId: String? = null,
- @JsonField(name = ["inviterDisplayName"])
var inviterDisplayName: String? = null,
- @JsonField(name = ["roomName"])
var roomName: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/invitation/InvitationOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/invitation/InvitationOCS.kt
index 1bc86ea029..33aa31cf7e 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/invitation/InvitationOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/invitation/InvitationOCS.kt
@@ -20,17 +20,15 @@
package com.nextcloud.talk.models.json.invitation
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class InvitationOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
var data: List?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/invitation/InvitationOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/invitation/InvitationOverall.kt
index 9c133c064e..ee13cdac9b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/invitation/InvitationOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/invitation/InvitationOverall.kt
@@ -20,14 +20,13 @@
package com.nextcloud.talk.models.json.invitation
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class InvitationOverall(
- @JsonField(name = ["ocs"])
var ocs: InvitationOCS?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/mention/Mention.kt b/app/src/main/java/com/nextcloud/talk/models/json/mention/Mention.kt
index 740c72fe9c..fb2a6ad763 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/mention/Mention.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/mention/Mention.kt
@@ -22,25 +22,25 @@
package com.nextcloud.talk.models.json.mention
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class Mention(
- @JsonField(name = ["id"])
+ @SerialName("id")
var id: String?,
- @JsonField(name = ["label"])
+ @SerialName("label")
var label: String?,
// type of user (guests or users or calls)
- @JsonField(name = ["source"])
+ @SerialName("source")
var source: String?,
- @JsonField(name = ["status"])
+ @SerialName("status")
var status: String?,
- @JsonField(name = ["statusIcon"])
+ @SerialName("statusIcon")
var statusIcon: String?,
- @JsonField(name = ["statusMessage"])
+ @SerialName("statusMessage")
var statusMessage: String?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.kt
index 5851cdee3b..f6740b3911 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.kt
@@ -24,17 +24,17 @@
package com.nextcloud.talk.models.json.mention
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class MentionOCS(
- @JsonField(name = ["meta"])
+ @SerialName("meta")
var meta: GenericMeta?,
- @JsonField(name = ["data"])
+ @SerialName("data")
var data: List?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOverall.kt
index a3d39d1c58..c8e5ce3e62 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOverall.kt
@@ -22,14 +22,13 @@
package com.nextcloud.talk.models.json.mention
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class MentionOverall(
- @JsonField(name = ["ocs"])
var ocs: MentionOCS?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.kt b/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.kt
index 86b6cf27c9..f10b3c8a48 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.kt
@@ -22,44 +22,34 @@
package com.nextcloud.talk.models.json.notifications
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import com.nextcloud.talk.models.json.converters.KotlinxJodaTimeConverter
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.converters.LoganSquareJodaTimeConverter
import kotlinx.parcelize.Parcelize
import org.joda.time.DateTime
@Parcelize
-@JsonObject
+@Serializable
data class Notification(
- @JsonField(name = ["icon"])
var icon: String?,
- @JsonField(name = ["notification_id"])
+ @SerialName("notification_id")
var notificationId: Int?,
- @JsonField(name = ["app"])
var app: String?,
- @JsonField(name = ["user"])
var user: String?,
- @JsonField(name = ["datetime"], typeConverter = LoganSquareJodaTimeConverter::class)
+ @Serializable(with = KotlinxJodaTimeConverter::class)
var datetime: DateTime?,
- @JsonField(name = ["object_type"])
+ @SerialName("object_type")
var objectType: String?,
- @JsonField(name = ["object_id"])
+ @SerialName("object_id")
var objectId: String?,
- @JsonField(name = ["subject"])
var subject: String?,
- @JsonField(name = ["subjectRich"])
var subjectRich: String?,
- @JsonField(name = ["subjectRichParameters"])
var subjectRichParameters: HashMap>?,
- @JsonField(name = ["message"])
var message: String?,
- @JsonField(name = ["messageRich"])
var messageRich: String?,
- @JsonField(name = ["messageRichParameters"])
var messageRichParameters: HashMap>?,
- @JsonField(name = ["link"])
var link: String?,
- @JsonField(name = ["actions"])
var actions: List?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationAction.kt b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationAction.kt
index cb06eb8378..d987a9b1fe 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationAction.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationAction.kt
@@ -22,20 +22,16 @@
package com.nextcloud.talk.models.json.notifications
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class NotificationAction(
- @JsonField(name = ["label"])
var label: String?,
- @JsonField(name = ["link"])
var link: String?,
- @JsonField(name = ["type"])
var type: String?,
- @JsonField(name = ["primary"])
var primary: Boolean
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOCS.kt
index 4745ffaa7c..04ac59fa68 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOCS.kt
@@ -22,17 +22,16 @@
package com.nextcloud.talk.models.json.notifications
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class NotificationOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
+ @SerialName("data")
var notification: Notification?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.kt
index 5c5fb22877..9b42ad25f1 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.kt
@@ -21,14 +21,13 @@
*/
package com.nextcloud.talk.models.json.notifications
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
// see https://github.com/nextcloud/notifications/blob/master/docs/ocs-endpoint-v2.md
-@JsonObject
+@Serializable
data class NotificationOverall(
- @JsonField(name = ["ocs"])
var ocs: NotificationOCS?
) {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationRichObject.kt b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationRichObject.kt
index e4eff410e7..9d655fd48c 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationRichObject.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationRichObject.kt
@@ -22,18 +22,16 @@
package com.nextcloud.talk.models.json.notifications
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
class NotificationRichObject(
- @JsonField(name = ["id"])
+ @SerialName("id")
var label: String?,
- @JsonField(name = ["type"])
var type: String?,
- @JsonField(name = ["name"])
var name: String?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.kt
index 94f3280acf..ff41f862d8 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.kt
@@ -24,17 +24,16 @@
package com.nextcloud.talk.models.json.notifications
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
class NotificationsOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
+ @SerialName("data")
var notificationsList: List?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOverall.kt
index cc5a945697..afea6ade44 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOverall.kt
@@ -21,12 +21,11 @@
*/
package com.nextcloud.talk.models.json.notifications
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
-@JsonObject
+@Serializable
class NotificationsOverall(
- @JsonField(name = ["ocs"])
var ocs: NotificationsOCS?
) {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphOCS.kt
index 941d849a6d..de1df5f04d 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphOCS.kt
@@ -20,17 +20,15 @@
package com.nextcloud.talk.models.json.opengraph
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class OpenGraphOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
var data: OpenGraphResponse?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphObject.kt b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphObject.kt
index 3150eaecfc..2c6837615b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphObject.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphObject.kt
@@ -20,22 +20,17 @@
package com.nextcloud.talk.models.json.opengraph
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class OpenGraphObject(
- @JsonField(name = ["id"])
var id: String,
- @JsonField(name = ["name"])
var name: String,
- @JsonField(name = ["description"])
var description: String? = null,
- @JsonField(name = ["thumb"])
var thumb: String? = null,
- @JsonField(name = ["link"])
var link: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphOverall.kt
index fae9653b27..ab8a5a78d7 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphOverall.kt
@@ -20,14 +20,13 @@
package com.nextcloud.talk.models.json.opengraph
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class OpenGraphOverall(
- @JsonField(name = ["ocs"])
var ocs: OpenGraphOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphResponse.kt b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphResponse.kt
index 07be4c5278..e2e596f823 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphResponse.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/OpenGraphResponse.kt
@@ -20,14 +20,13 @@
package com.nextcloud.talk.models.json.opengraph
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class OpenGraphResponse(
- @JsonField(name = ["references"])
var references: HashMap?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/Reference.kt b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/Reference.kt
index b9652110e5..593af62322 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/Reference.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/Reference.kt
@@ -20,20 +20,16 @@
package com.nextcloud.talk.models.json.opengraph
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class Reference(
- @JsonField(name = ["richObjectType"])
var richObjectType: String? = null,
- @JsonField(name = ["richObject"])
var richObject: RichObject? = null,
- @JsonField(name = ["openGraphObject"])
var openGraphObject: OpenGraphObject? = null,
- @JsonField(name = ["accessible"])
var accessible: Boolean
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/RichObject.kt b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/RichObject.kt
index c9697429d7..a1f3bdcfb4 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/opengraph/RichObject.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/opengraph/RichObject.kt
@@ -20,22 +20,17 @@
package com.nextcloud.talk.models.json.opengraph
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class RichObject(
- @JsonField(name = ["id"])
var id: String,
- @JsonField(name = ["name"])
var name: String,
- @JsonField(name = ["description"])
var description: String? = null,
- @JsonField(name = ["thumb"])
var thumb: String? = null,
- @JsonField(name = ["link"])
var link: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOCS.kt
index fef24a6e6a..6092309cce 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOCS.kt
@@ -22,19 +22,17 @@
package com.nextcloud.talk.models.json.participants
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class AddParticipantOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
/* Returned room will have only type set, and sometimes even that will be null */
- @JsonField(name = ["data"])
var data: Conversation? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOverall.kt
index 8fee658136..bea37acff6 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOverall.kt
@@ -22,15 +22,14 @@
package com.nextcloud.talk.models.json.participants
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.conversations.RoomsOCS
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class AddParticipantOverall(
- @JsonField(name = ["ocs"])
var ocs: RoomsOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt
index 68f0c7bf94..dfd96b5dea 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt
@@ -22,72 +22,51 @@
package com.nextcloud.talk.models.json.participants
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.converters.EnumActorTypeConverter
import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class Participant(
- @JsonField(name = ["attendeeId"])
var attendeeId: Long? = null,
- @JsonField(name = ["actorType"], typeConverter = EnumActorTypeConverter::class)
+ @SerialName("actorType"], typeConverter = EnumActorTypeConverter::class)
var actorType: ActorType? = null,
- @JsonField(name = ["actorId"])
var actorId: String? = null,
- @JsonField(name = ["attendeePin"])
var attendeePin: String? = null,
@Deprecated("")
- @JsonField(name = ["userId"])
var userId: String? = null,
- @JsonField(name = ["internal"])
var internal: Boolean? = null,
- @JsonField(name = ["type", "participantType"], typeConverter = EnumParticipantTypeConverter::class)
+ @SerialName("type", "participantType"], typeConverter = EnumParticipantTypeConverter::class)
var type: ParticipantType? = null,
@Deprecated("")
- @JsonField(name = ["name"])
var name: String? = null,
- @JsonField(name = ["displayName"])
var displayName: String? = null,
- @JsonField(name = ["lastPing"])
var lastPing: Long = 0,
@Deprecated("")
- @JsonField(name = ["sessionId"])
var sessionId: String? = null,
- @JsonField(name = ["sessionIds"])
var sessionIds: ArrayList = ArrayList(0),
@Deprecated("")
- @JsonField(name = ["roomId"])
var roomId: Long = 0,
-
- @JsonField(name = ["inCall"])
var inCall: Long = 0,
-
- @JsonField(name = ["status"])
var status: String? = null,
-
- @JsonField(name = ["statusIcon"])
var statusIcon: String? = null,
-
- @JsonField(name = ["statusMessage"])
var statusMessage: String? = null,
-
var source: String? = null,
-
var selected: Boolean = false
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.kt
index 0b0af271cf..1c0ff262a9 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.kt
@@ -22,17 +22,15 @@
package com.nextcloud.talk.models.json.participants
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ParticipantsOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
var data: List? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOverall.kt
index cc69f63208..b4fc849b1a 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOverall.kt
@@ -22,14 +22,13 @@
package com.nextcloud.talk.models.json.participants
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ParticipantsOverall(
- @JsonField(name = ["ocs"])
var ocs: ParticipantsOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/DecryptedPushMessage.kt b/app/src/main/java/com/nextcloud/talk/models/json/push/DecryptedPushMessage.kt
index 9ff9b3a32c..cc3d9f80d0 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/DecryptedPushMessage.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/DecryptedPushMessage.kt
@@ -20,39 +20,39 @@
package com.nextcloud.talk.models.json.push
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
+import kotlinx.serialization.SerialName
import com.bluelinelabs.logansquare.annotation.JsonIgnore
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class DecryptedPushMessage(
- @JsonField(name = ["app"])
+ @SerialName("app")
var app: String?,
- @JsonField(name = ["type"])
+ @SerialName("type")
var type: String?,
- @JsonField(name = ["subject"])
+ @SerialName("subject")
var subject: String,
- @JsonField(name = ["id"])
+ @SerialName("id")
var id: String?,
- @JsonField(name = ["nid"])
+ @SerialName("nid")
var notificationId: Long?,
- @JsonField(name = ["nids"])
+ @SerialName("nids")
var notificationIds: LongArray?,
- @JsonField(name = ["delete"])
+ @SerialName("delete")
var delete: Boolean,
- @JsonField(name = ["delete-all"])
+ @SerialName("delete-all")
var deleteAll: Boolean,
- @JsonField(name = ["delete-multiple"])
+ @SerialName("delete-multiple")
var deleteMultiple: Boolean,
@JsonIgnore
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/NotificationUser.kt b/app/src/main/java/com/nextcloud/talk/models/json/push/NotificationUser.kt
index 8f0634bc51..68e66d1dd9 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/NotificationUser.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/NotificationUser.kt
@@ -22,20 +22,20 @@
package com.nextcloud.talk.models.json.push
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class NotificationUser(
- @JsonField(name = ["type"])
+ @SerialName("type")
var type: String?,
- @JsonField(name = ["id"])
+ @SerialName("id")
var id: String?,
- @JsonField(name = ["name"])
+ @SerialName("name")
var name: String?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfigurationState.kt b/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfigurationState.kt
index 9b6e39956f..3dbc53e0e7 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfigurationState.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfigurationState.kt
@@ -22,26 +22,26 @@
package com.nextcloud.talk.models.json.push
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class PushConfigurationState(
- @JsonField(name = ["pushToken"])
+ @SerialName("pushToken")
var pushToken: String?,
- @JsonField(name = ["deviceIdentifier"])
+ @SerialName("deviceIdentifier")
var deviceIdentifier: String?,
- @JsonField(name = ["deviceIdentifierSignature"])
+ @SerialName("deviceIdentifierSignature")
var deviceIdentifierSignature: String?,
- @JsonField(name = ["userPublicKey"])
+ @SerialName("userPublicKey")
var userPublicKey: String?,
- @JsonField(name = ["usesRegularPass"])
+ @SerialName("usesRegularPass")
var usesRegularPass: Boolean?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistration.kt b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistration.kt
index dcfa7c1c73..2744746668 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistration.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistration.kt
@@ -22,20 +22,20 @@
package com.nextcloud.talk.models.json.push
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.SerialName
@Parcelize
-@JsonObject
+@Serializable
data class PushRegistration(
- @JsonField(name = ["publicKey"])
+ @SerialName("publicKey")
var publicKey: String?,
- @JsonField(name = ["deviceIdentifier"])
+ @SerialName("deviceIdentifier")
var deviceIdentifier: String?,
- @JsonField(name = ["signature"])
+ @SerialName("signature")
var signature: String?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOCS.kt
index 204c83e2b4..6be0e1044a 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOCS.kt
@@ -22,17 +22,17 @@
package com.nextcloud.talk.models.json.push
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class PushRegistrationOCS(
- @JsonField(name = ["meta"])
+ @SerialName("meta")
var meta: GenericMeta?,
- @JsonField(name = ["data"])
+ @SerialName("data")
var data: PushRegistration?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOverall.kt
index dc6fd9c7e5..ac748e7049 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOverall.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.push
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class PushRegistrationOverall(
- @JsonField(name = ["ocs"])
+ @SerialName("ocs")
var ocs: PushRegistrationOCS?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionVoter.kt b/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionVoter.kt
index 74eeec9a39..15b1f594c9 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionVoter.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionVoter.kt
@@ -20,21 +20,18 @@
package com.nextcloud.talk.models.json.reactions
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.converters.EnumReactionActorTypeConverter
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ReactionVoter(
- @JsonField(name = ["actorType"], typeConverter = EnumReactionActorTypeConverter::class)
+ @SerialName("actorType", typeConverter = EnumReactionActorTypeConverter::class)
var actorType: ReactionActorType?,
- @JsonField(name = ["actorId"])
var actorId: String?,
- @JsonField(name = ["actorDisplayName"])
var actorDisplayName: String?,
- @JsonField(name = ["timestamp"])
var timestamp: Long = 0
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionsOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionsOCS.kt
index a52cea636d..7d28998b54 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionsOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionsOCS.kt
@@ -22,18 +22,16 @@
package com.nextcloud.talk.models.json.reactions
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
import java.util.HashMap
@Parcelize
-@JsonObject
+@Serializable
data class ReactionsOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
var data: HashMap>?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionsOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionsOverall.kt
index 56fad102c5..37d628340e 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionsOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/reactions/ReactionsOverall.kt
@@ -20,14 +20,13 @@
package com.nextcloud.talk.models.json.reactions
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ReactionsOverall(
- @JsonField(name = ["ocs"])
var ocs: ReactionsOCS?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/reminder/Reminder.kt b/app/src/main/java/com/nextcloud/talk/models/json/reminder/Reminder.kt
index b8b47fc28a..90c4579b29 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/reminder/Reminder.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/reminder/Reminder.kt
@@ -20,20 +20,16 @@
package com.nextcloud.talk.models.json.reminder
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class Reminder(
- @JsonField(name = ["userid"])
var userid: String? = null,
- @JsonField(name = ["token"])
var token: String? = null,
- @JsonField(name = ["messageId"])
var messageId: Int? = null,
- @JsonField(name = ["timestamp"])
var timestamp: Int? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/reminder/ReminderOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/reminder/ReminderOCS.kt
index 2dbe0309b2..78bd150000 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/reminder/ReminderOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/reminder/ReminderOCS.kt
@@ -20,17 +20,15 @@
package com.nextcloud.talk.models.json.reminder
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ReminderOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta? = null,
- @JsonField(name = ["data"])
var data: Reminder? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/reminder/ReminderOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/reminder/ReminderOverall.kt
index 8c94cf8675..ba0e71bf44 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/reminder/ReminderOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/reminder/ReminderOverall.kt
@@ -20,14 +20,13 @@
package com.nextcloud.talk.models.json.reminder
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ReminderOverall(
- @JsonField(name = ["ocs"])
var ocs: ReminderOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/search/ContactsByNumberOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/search/ContactsByNumberOCS.kt
index 9df294a3ca..730bbc49b4 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/search/ContactsByNumberOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/search/ContactsByNumberOCS.kt
@@ -22,17 +22,16 @@
package com.nextcloud.talk.models.json.search
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ContactsByNumberOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
+ @SerialName("data")
var map: Map? = HashMap()
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/search/ContactsByNumberOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/search/ContactsByNumberOverall.kt
index 6fdf7ccf72..136e0f7a56 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/search/ContactsByNumberOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/search/ContactsByNumberOverall.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.search
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ContactsByNumberOverall(
- @JsonField(name = ["ocs"])
+ @SerialName("ocs")
var ocs: ContactsByNumberOCS?
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.kt b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.kt
index 11373f31e8..ab8f6844ae 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.sharees
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ExactSharees(
- @JsonField(name = ["users"])
+ @SerialName("users")
var exactSharees: List? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/Sharee.kt b/app/src/main/java/com/nextcloud/talk/models/json/sharees/Sharee.kt
index e70fbc947b..ba6b4143f0 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/Sharee.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/Sharee.kt
@@ -22,18 +22,18 @@
package com.nextcloud.talk.models.json.sharees
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class Sharee(
- @JsonField(name = ["id"])
+ @SerialName("id")
var id: String? = null,
- @JsonField(name = ["value"])
+ @SerialName("value")
var value: Value? = null,
- @JsonField(name = ["label"])
+ @SerialName("label")
var label: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOCS.kt b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOCS.kt
index b6b06489ec..4285b366f7 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOCS.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOCS.kt
@@ -22,17 +22,15 @@
package com.nextcloud.talk.models.json.sharees
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ShareesOCS(
- @JsonField(name = ["meta"])
var meta: GenericMeta?,
- @JsonField(name = ["data"])
var data: SharesData? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOverall.kt b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOverall.kt
index 0aa6229e71..f4febb9ffd 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOverall.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOverall.kt
@@ -22,14 +22,13 @@
package com.nextcloud.talk.models.json.sharees
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class ShareesOverall(
- @JsonField(name = ["ocs"])
var ocs: ShareesOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.kt b/app/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.kt
index 265ffadc30..a66d517aad 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.kt
@@ -22,16 +22,15 @@
package com.nextcloud.talk.models.json.sharees
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class SharesData(
- @JsonField(name = ["users"])
var users: List? = null,
- @JsonField(name = ["exact"])
+ @SerialName("exact")
var exactUsers: ExactSharees? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/Value.kt b/app/src/main/java/com/nextcloud/talk/models/json/sharees/Value.kt
index 1f2af0db6c..e1a12b586e 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/Value.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/Value.kt
@@ -22,14 +22,14 @@
package com.nextcloud.talk.models.json.sharees
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class Value(
- @JsonField(name = ["shareWith"])
+ @SerialName("shareWith")
var shareWith: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessage.kt b/app/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessage.kt
index d4c0a0c663..110abbe4e1 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessage.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessage.kt
@@ -22,24 +22,24 @@
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.AnyParceler
import kotlinx.parcelize.Parcelize
import kotlinx.parcelize.TypeParceler
@Parcelize
-@JsonObject
+@Serializable
@TypeParceler
data class DataChannelMessage(
- @JsonField(name = ["type"])
var type: String? = null,
/** Can be String or Map
* Use only for received messages */
- @JsonField(name = ["payload"])
- var payload: Any? = null,
+ @SerialName("payload")
+ // TODO: Can be String or Map
+ var payload: String? = null,
/** Use only to send messages */
- @JsonField(name = ["payload"])
+ // @SerialName("payload") // TODO: duplicated payload was intentional, see commit 68cf4ee0
var payloadMap: Map? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCIceCandidate.kt b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCIceCandidate.kt
index e59a3d63ec..8346c37465 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCIceCandidate.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCIceCandidate.kt
@@ -22,18 +22,15 @@
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class NCIceCandidate(
- @JsonField(name = ["sdpMLineIndex"])
var sdpMLineIndex: Int = 0,
- @JsonField(name = ["sdpMid"])
var sdpMid: String? = null,
- @JsonField(name = ["candidate"])
var candidate: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessagePayload.kt b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessagePayload.kt
index 1f478b9fc0..e7156fee69 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessagePayload.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessagePayload.kt
@@ -22,28 +22,21 @@
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class NCMessagePayload(
- @JsonField(name = ["type"])
var type: String? = null,
- @JsonField(name = ["sdp"])
var sdp: String? = null,
- @JsonField(name = ["nick"])
var nick: String? = null,
- @JsonField(name = ["candidate"])
+ @SerialName("candidate")
var iceCandidate: NCIceCandidate? = null,
- @JsonField(name = ["name"])
var name: String? = null,
- @JsonField(name = ["state"])
var state: Boolean? = null,
- @JsonField(name = ["timestamp"])
var timestamp: Long? = null,
- @JsonField(name = ["reaction"])
var reaction: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCSignalingMessage.kt b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCSignalingMessage.kt
index f87f9a9b46..0fa6b10f46 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCSignalingMessage.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCSignalingMessage.kt
@@ -22,26 +22,19 @@
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize
@Parcelize
-@JsonObject
+@Serializable
data class NCSignalingMessage(
- @JsonField(name = ["from"])
var from: String? = null,
- @JsonField(name = ["to"])
var to: String? = null,
- @JsonField(name = ["type"])
var type: String? = null,
- @JsonField(name = ["payload"])
var payload: NCMessagePayload? = null,
- @JsonField(name = ["roomType"])
var roomType: String? = null,
- @JsonField(name = ["sid"])
var sid: String? = null,
- @JsonField(name = ["prefix"])
var prefix: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/Signaling.kt b/app/src/main/java/com/nextcloud/talk/models/json/signaling/Signaling.kt
index 8547160424..c808ff3f34 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/Signaling.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/Signaling.kt
@@ -22,21 +22,21 @@
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
-import com.bluelinelabs.logansquare.annotation.JsonField
-import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
import com.nextcloud.talk.models.json.AnyParceler
import kotlinx.parcelize.Parcelize
import kotlinx.parcelize.TypeParceler
@Parcelize
-@JsonObject
+@Serializable
@TypeParceler
data class Signaling(
- @JsonField(name = ["type"])
var type: String? = null,
/** can be NCSignalingMessage (encoded as a String) or List