# Consumer ProGuard/R8 rules для :vendor:talk-app (F7cloud).
# Эти правила ПРОПАГИРУЮТСЯ в R8 приложения :app (vendor собирается как library
# с minifyEnabled false, поэтому обычные proguardFiles на потребителя не влияют —
# нужен именно consumerProguardFiles, см. app/build.gradle).
# Защищают зависимости vendor-форка Nextcloud Talk от переименования/удаления R8.

# --- WebRTC (JNI: нативный libjingle_peerconnection_so.so зовёт org.webrtc.* по имени) ---
-keep class org.webrtc.** { *; }
-dontwarn org.webrtc.**

# --- LoganSquare (converter Talk API: сгенерированные $$JsonObjectMapper через рефлексию) ---
-keep class com.bluelinelabs.logansquare.** { *; }
-keep @com.bluelinelabs.logansquare.annotation.JsonObject class * { *; }
-keep class **$$JsonObjectMapper { *; }
-keepnames class * extends com.bluelinelabs.logansquare.JsonMapper
-keepclassmembers class * {
    @com.bluelinelabs.logansquare.annotation.JsonField *;
}

# --- Jackson core (используется LoganSquare) ---
-dontwarn com.fasterxml.jackson.**
-keep class com.fasterxml.jackson.** { *; }

# --- Модели Talk API (парсятся LoganSquare/Gson по именам полей) ---
-keep class ru.f7cloud.talk.models.** { *; }

# --- Gson (converter-gson + модели) ---
-keepattributes Signature,*Annotation*,EnclosingMethod,InnerClasses
-keep class com.google.gson.** { *; }
-dontwarn com.google.gson.**
-keepclassmembers,allowobfuscation class * {
    @com.google.gson.annotations.SerializedName <fields>;
}

# --- Retrofit 2 ---
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
-keep,allowobfuscation,allowshrinking class retrofit2.Response
-keepclasseswithmembers class * { @retrofit2.http.* <methods>; }
-dontwarn retrofit2.**
-dontwarn okio.**
-keepattributes RuntimeVisibleAnnotations,RuntimeVisibleParameterAnnotations

# --- Parceler (сгенерированные $$Parcelable) ---
-keep class **$$Parcelable { *; }
-keep interface org.parceler.Parcel
-keep @org.parceler.Parcel class * { *; }
-keepclassmembers class **$$Parcelable {
    public static final ** CREATOR;
}

# --- EventBus (@Subscribe вызывается рефлексией) ---
-keepattributes *Annotation*
-keepclassmembers class * {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
-keep class org.greenrobot.eventbus.android.** { *; }

# --- Dagger / autodagger2 ---
-dontwarn dagger.**
-dontwarn com.github.lukaspili.autodagger2.**

# --- RxJava2 (опциональные зависимости на этапе компиляции) ---
-dontwarn java.util.concurrent.Flow*
-dontwarn sun.misc.**
-dontwarn org.reactivestreams.**

# --- Conscrypt (опциональный security-provider) ---
-dontwarn org.conscrypt.**
-keep class org.conscrypt.** { *; }

# --- прочие опциональные/аннотационные зависимости, на которые ругается R8 ---
-dontwarn javax.annotation.**
-dontwarn org.bouncycastle.**
-dontwarn org.slf4j.**
-dontwarn okhttp3.internal.platform.**

# --- недостающие опциональные refs (из missing_rules.txt R8): geogson→старая guava,
#     joda-convert аннотации joda-time (maps-стек Talk). Классы отсутствуют в рантайме,
#     код их не вызывает — безопасно подавить. ---
-dontwarn com.google.common.base.Objects$ToStringHelper
-dontwarn org.joda.convert.FromString
-dontwarn org.joda.convert.ToString
