diff --git a/Share/src/main/AndroidManifest.xml b/Share/src/main/AndroidManifest.xml index 7bc0a90cb..3bb420a51 100644 --- a/Share/src/main/AndroidManifest.xml +++ b/Share/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ > - + ();} -ignorewarnings -# End of content from D:\android project\pandorapan\app\proguard-rules.pro -# The proguard configuration file for the following section is D:\android project\pandorapan\app\build\intermediates\aapt_proguard_file\google_onlineRelease\processGoogle_onlineReleaseResources\aapt_rules.txt +# End of content from D:\AndroidProject\pandorapanL\app\proguard-rules.pro +# The proguard configuration file for the following section is D:\AndroidProject\pandorapanL\app\build\intermediates\aapt_proguard_file\google_testRelease\processGoogle_testReleaseResources\aapt_rules.txt -keep class androidx.core.app.CoreComponentFactory { (); } -keep class androidx.core.content.FileProvider { (); } -keep class androidx.core.content.FileProvider4Utils { (); } @@ -674,6 +674,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class androidx.constraintlayout.widget.ConstraintLayout { (android.content.Context, android.util.AttributeSet); } +-keep class androidx.constraintlayout.widget.Group { (android.content.Context, android.util.AttributeSet); } + -keep class androidx.constraintlayout.widget.Guideline { (android.content.Context, android.util.AttributeSet); } -keep class androidx.coordinatorlayout.widget.CoordinatorLayout { (android.content.Context, android.util.AttributeSet); } @@ -1091,11 +1093,11 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keepclassmembers class * { *** videoEditClick(android.view.View); } -# End of content from D:\android project\pandorapan\app\build\intermediates\aapt_proguard_file\google_onlineRelease\processGoogle_onlineReleaseResources\aapt_rules.txt -# The proguard configuration file for the following section is D:\android project\pandorapan\lib_faceunity\build\intermediates\consumer_proguard_dir\google_onlineRelease\exportGoogle_onlineReleaseConsumerProguardFiles\lib0\proguard.txt +# End of content from D:\AndroidProject\pandorapanL\app\build\intermediates\aapt_proguard_file\google_testRelease\processGoogle_testReleaseResources\aapt_rules.txt +# The proguard configuration file for the following section is D:\AndroidProject\pandorapanL\lib_faceunity\build\intermediates\consumer_proguard_dir\google_testRelease\exportGoogle_testReleaseConsumerProguardFiles\lib0\proguard.txt -# End of content from D:\android project\pandorapan\lib_faceunity\build\intermediates\consumer_proguard_dir\google_onlineRelease\exportGoogle_onlineReleaseConsumerProguardFiles\lib0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt +# End of content from D:\AndroidProject\pandorapanL\lib_faceunity\build\intermediates\consumer_proguard_dir\google_testRelease\exportGoogle_testReleaseConsumerProguardFiles\lib0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt # Generated keep rule for Lifecycle observer adapter. -if class com.lxj.xpopup.core.BasePopupView { (...); @@ -1104,8 +1106,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; (...); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt # Copyright (C) 2015 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1153,16 +1155,16 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt -# The proguard configuration file for the following section is D:\android project\pandorapan\lib_google\build\intermediates\consumer_proguard_dir\google_onlineRelease\exportGoogle_onlineReleaseConsumerProguardFiles\lib0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt +# The proguard configuration file for the following section is D:\AndroidProject\pandorapanL\lib_google\build\intermediates\consumer_proguard_dir\google_testRelease\exportGoogle_testReleaseConsumerProguardFiles\lib0\proguard.txt -# End of content from D:\android project\pandorapan\lib_google\build\intermediates\consumer_proguard_dir\google_onlineRelease\exportGoogle_onlineReleaseConsumerProguardFiles\lib0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt +# End of content from D:\AndroidProject\pandorapanL\lib_google\build\intermediates\consumer_proguard_dir\google_testRelease\exportGoogle_testReleaseConsumerProguardFiles\lib0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt -keepattributes *Annotation* -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt # To enable ProGuard in your project, edit project.properties # to define the proguard.config property as described in that file. # @@ -1202,8 +1204,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; public android.os.Bundle getSkuDetails(int, java.lang.String, java.lang.String, android.os.Bundle); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1244,8 +1246,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.gamingservices.GamingServices -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1286,8 +1288,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.share.Share -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1328,8 +1330,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.login.Login -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1370,12 +1372,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.common.Common -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt -keep class com.davemorrissey.labs.subscaleview.** { *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt # Copyright (C) 2018 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1399,13 +1401,13 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt #Picasso Proguard Config https://github.com/square/picasso -dontwarn com.squareup.okhttp.** -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt # Copyright (C) 2016 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1432,13 +1434,13 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; RuntimeVisibleParameterAnnotations, RuntimeVisibleTypeAnnotations -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt -keepclasseswithmembers class androidx.recyclerview.widget.RecyclerView$ViewHolder { public final android.view.View *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt # Proguard rules specific to the UI module. # Constructor method accessed via reflection in StyledPlayerView @@ -1479,8 +1481,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -dontwarn kotlin.annotations.jvm.** -dontwarn javax.annotation.** -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt # Copyright (C) 2015 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1506,11 +1508,11 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; public void suppressLayout(boolean); public boolean isLayoutSuppressed(); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt -# The proguard configuration file for the following section is D:\android project\pandorapan\TabLayout\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt +# The proguard configuration file for the following section is D:\AndroidProject\pandorapanL\TabLayout\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt -# End of content from D:\android project\pandorapan\TabLayout\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt +# End of content from D:\AndroidProject\pandorapanL\TabLayout\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1551,8 +1553,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.applinks.AppLinks -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1597,8 +1599,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.messenger.Messenger -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt # Copyright (C) 2020 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1627,16 +1629,16 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; android.view.View findViewByAccessibilityIdTraversal(int); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt -assumenosideeffects public class androidx.compose.runtime.ComposerKt { void sourceInformation(androidx.compose.runtime.Composer,java.lang.String); void sourceInformationMarkerStart(androidx.compose.runtime.Composer,int,java.lang.String); void sourceInformationMarkerEnd(androidx.compose.runtime.Composer); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt -dontwarn jp.co.cyberagent.android.gpuimage.** -keep public class * implements com.bumptech.glide.module.GlideModule @@ -1646,8 +1648,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; public *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt -keep public class * implements com.bumptech.glide.module.GlideModule -keep class * extends com.bumptech.glide.module.AppGlideModule { (...); @@ -1663,8 +1665,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; # Uncomment for DexGuard only #-keepresourcexmlelements manifest/application/meta-data@value=GlideModule -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\245cd6e28cb45ea53af06bd1902d8887\transformed\jetified-billing-7.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\245cd6e28cb45ea53af06bd1902d8887\transformed\jetified-billing-7.0.0\proguard.txt # Keep the AIDL interface -keep class com.android.vending.billing.** { *; } @@ -1699,8 +1701,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\245cd6e28cb45ea53af06bd1902d8887\transformed\jetified-billing-7.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\389aac78ceffe6f037f7624d2175f98b\transformed\jetified-play-services-base-18.3.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\245cd6e28cb45ea53af06bd1902d8887\transformed\jetified-billing-7.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\389aac78ceffe6f037f7624d2175f98b\transformed\jetified-play-services-base-18.3.0\proguard.txt # b/35135904 Ensure that proguard will not strip the mResultGuardian. -keepclassmembers class com.google.android.gms.common.api.internal.BasePendingResult { com.google.android.gms.common.api.internal.BasePendingResult$ReleasableResultGuardian mResultGuardian; @@ -1708,8 +1710,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\389aac78ceffe6f037f7624d2175f98b\transformed\jetified-play-services-base-18.3.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\fdcd25b13ca01df0d64e21ab18452962\transformed\jetified-play-services-measurement-api-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\389aac78ceffe6f037f7624d2175f98b\transformed\jetified-play-services-base-18.3.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\fdcd25b13ca01df0d64e21ab18452962\transformed\jetified-play-services-measurement-api-21.1.1\proguard.txt # Can be removed once we pull in a dependency on firebase-common that includes # https://github.com/firebase/firebase-android-sdk/pull/1472/commits/856f1ca1151cdd88679bbc778892f23dfa34fc06#diff-a2ed34b5a38b4c6c686b09e54865eb48 -dontwarn com.google.auto.value.AutoValue @@ -1722,18 +1724,18 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\fdcd25b13ca01df0d64e21ab18452962\transformed\jetified-play-services-measurement-api-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\fdcd25b13ca01df0d64e21ab18452962\transformed\jetified-play-services-measurement-api-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt -dontwarn com.google.firebase.platforminfo.KotlinDetector -dontwarn com.google.auto.value.AutoValue -dontwarn com.google.auto.value.AutoValue$Builder -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\1d73edc853ec5797eb8fbdbaf92a3a43\transformed\jetified-play-services-tasks-18.1.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\1d73edc853ec5797eb8fbdbaf92a3a43\transformed\jetified-play-services-tasks-18.1.0\proguard.txt -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\1d73edc853ec5797eb8fbdbaf92a3a43\transformed\jetified-play-services-tasks-18.1.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\53d8ae00710cb6dfde668ad5c2529a5c\transformed\jetified-play-services-measurement-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\1d73edc853ec5797eb8fbdbaf92a3a43\transformed\jetified-play-services-tasks-18.1.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\53d8ae00710cb6dfde668ad5c2529a5c\transformed\jetified-play-services-measurement-21.1.1\proguard.txt # We keep all fields for every generated proto file as the runtime uses # reflection over them that ProGuard cannot detect. Without this keep # rule, fields may be removed that would cause runtime failures. @@ -1741,8 +1743,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\53d8ae00710cb6dfde668ad5c2529a5c\transformed\jetified-play-services-measurement-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\d9a1fa15000998f069a9eb095ddd5d6c\transformed\jetified-play-services-measurement-sdk-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\53d8ae00710cb6dfde668ad5c2529a5c\transformed\jetified-play-services-measurement-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\d9a1fa15000998f069a9eb095ddd5d6c\transformed\jetified-play-services-measurement-sdk-21.1.1\proguard.txt # We keep all fields for every generated proto file as the runtime uses # reflection over them that ProGuard cannot detect. Without this keep # rule, fields may be removed that would cause runtime failures. @@ -1750,8 +1752,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\d9a1fa15000998f069a9eb095ddd5d6c\transformed\jetified-play-services-measurement-sdk-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\e3d5db4c204c05b688c67157d08d719e\transformed\jetified-play-services-measurement-impl-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\d9a1fa15000998f069a9eb095ddd5d6c\transformed\jetified-play-services-measurement-sdk-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\e3d5db4c204c05b688c67157d08d719e\transformed\jetified-play-services-measurement-impl-21.1.1\proguard.txt # We keep all fields for every generated proto file as the runtime uses # reflection over them that ProGuard cannot detect. Without this keep # rule, fields may be removed that would cause runtime failures. @@ -1759,8 +1761,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\e3d5db4c204c05b688c67157d08d719e\transformed\jetified-play-services-measurement-impl-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\a14887389ea05f2c3a61b51470f02e11\transformed\jetified-play-services-measurement-sdk-api-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\e3d5db4c204c05b688c67157d08d719e\transformed\jetified-play-services-measurement-impl-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\a14887389ea05f2c3a61b51470f02e11\transformed\jetified-play-services-measurement-sdk-api-21.1.1\proguard.txt # We keep all fields for every generated proto file as the runtime uses # reflection over them that ProGuard cannot detect. Without this keep # rule, fields may be removed that would cause runtime failures. @@ -1768,8 +1770,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\a14887389ea05f2c3a61b51470f02e11\transformed\jetified-play-services-measurement-sdk-api-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\a00f92aeac02d4041e8903bda4c31467\transformed\jetified-play-services-measurement-base-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\a14887389ea05f2c3a61b51470f02e11\transformed\jetified-play-services-measurement-sdk-api-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\a00f92aeac02d4041e8903bda4c31467\transformed\jetified-play-services-measurement-base-21.1.1\proguard.txt # We keep all fields for every generated proto file as the runtime uses # reflection over them that ProGuard cannot detect. Without this keep # rule, fields may be removed that would cause runtime failures. @@ -1777,8 +1779,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\a00f92aeac02d4041e8903bda4c31467\transformed\jetified-play-services-measurement-base-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\6eda7df53f5a535e22df39c8e1d72650\transformed\jetified-play-services-basement-18.3.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\a00f92aeac02d4041e8903bda4c31467\transformed\jetified-play-services-measurement-base-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\6eda7df53f5a535e22df39c8e1d72650\transformed\jetified-play-services-basement-18.3.0\proguard.txt # Needed when building against pre-Marshmallow SDK. -dontwarn android.security.NetworkSecurityPolicy @@ -1856,8 +1858,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\6eda7df53f5a535e22df39c8e1d72650\transformed\jetified-play-services-basement-18.3.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\6eda7df53f5a535e22df39c8e1d72650\transformed\jetified-play-services-basement-18.3.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt # Copyright (C) 2020 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1878,12 +1880,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; public (); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt # 本库模块专用的混淆规则 -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1941,8 +1943,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; public ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt -keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel { (); } @@ -1951,8 +1953,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; (android.app.Application); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt -keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel { (androidx.lifecycle.SavedStateHandle); } @@ -1961,8 +1963,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; (android.app.Application,androidx.lifecycle.SavedStateHandle); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro # When editing this file, update the following files as well: # - META-INF/proguard/coroutines.pro # - META-INF/com.android.tools/proguard/coroutines.pro @@ -1990,8 +1992,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; # An annotation used for build tooling, won't be directly accessed. -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro # Allow R8 to optimize away the FastServiceLoader. # Together with ServiceLoader optimization in R8 # this results in direct instantiation when loading Dispatchers.Main @@ -2016,8 +2018,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; boolean getDEBUG() return false; boolean getRECOVER_STACK_TRACES() return false; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt #GSON # Retain Annotations for model objects -keepattributes *Annotation* @@ -2041,8 +2043,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keepclasseswithmembers class * { @retrofit2.http.* ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro # JSR 305 annotations are for embedding nullability information. -dontwarn javax.annotation.** @@ -2055,16 +2057,16 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; # OkHttp platform used only on JVM and when Conscrypt dependency is available. -dontwarn okhttp3.internal.platform.ConscryptPlatform -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt # Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in G:\Android_IDE\ADT\sdk/tools/proguard/proguard-android.txt @@ -2093,8 +2095,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep @com.blankj.utilcode.util.ApiUtils$Api class * -keepattributes *Annotation* -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt -keep class cn.rongcloud.xcrash.NativeHandler { native ; void crashCallback(...); @@ -2102,22 +2104,22 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; void traceCallbackBeforeDump(...); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt # Proguard configuration. -dontwarn com.squareup.okhttp.** # References to Picasso are okay if the consuming app doesn't use it -dontwarn com.squareup.picasso.Transformation -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt -keep public class pl.droidsonroids.gif.GifIOException{(int, java.lang.String);} #Prevents warnings for consumers not using AndroidX -dontwarn androidx.annotation.** -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt #https://github.com/leolin310148/ShortcutBadger/issues/46 -keep class me.leolin.shortcutbadger.impl.AdwHomeBadger { (...); } -keep class me.leolin.shortcutbadger.impl.ApexHomeBadger { (...); } @@ -2128,8 +2130,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class me.leolin.shortcutbadger.impl.SolidHomeBadger { (...); } -keep class me.leolin.shortcutbadger.impl.SonyHomeBadger { (...); } -keep class me.leolin.shortcutbadger.impl.XiaomiHomeBadger { (...); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt # Add project specific ProGuard rules here. # You can control the filterSet of applied configuration files using the # proguardFiles setting in build.gradle. @@ -2167,8 +2169,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; # 保持反射不被混淆 -keepattributes EnclosingMethod -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. @@ -2190,12 +2192,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt # 本库模块专用的混淆规则 -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\483c0844792efef20618064763675691\transformed\jetified-SudMGP-1.4.3.1201\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\483c0844792efef20618064763675691\transformed\jetified-SudMGP-1.4.3.1201\proguard.txt -keep class com.cocos.game.**{ *; } -keep class tech.sud.runtime.**{ *; } -keep class tech.sud.mgp.core.**{ *; } @@ -2849,8 +2851,8 @@ native ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\483c0844792efef20618064763675691\transformed\jetified-SudMGP-1.4.3.1201\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\9fef6e1dea59ce01cbe6739f12545786\transformed\jetified-SudASR-1.4.3.1201\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\483c0844792efef20618064763675691\transformed\jetified-SudMGP-1.4.3.1201\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\9fef6e1dea59ce01cbe6739f12545786\transformed\jetified-SudASR-1.4.3.1201\proguard.txt -keep class com.microsoft.cognitiveservices.** { *; } -keep class tech.sud.mgp.asr.azure.** { *; } @@ -2865,8 +2867,8 @@ native ; *** *Callback(long); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\9fef6e1dea59ce01cbe6739f12545786\transformed\jetified-SudASR-1.4.3.1201\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\d5594233d50b1d727f4630790ca89a13\transformed\jetified-core-8.7.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\9fef6e1dea59ce01cbe6739f12545786\transformed\jetified-SudASR-1.4.3.1201\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\d5594233d50b1d727f4630790ca89a13\transformed\jetified-core-8.7.0\proguard.txt # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. @@ -2893,8 +2895,8 @@ native ; -keep class com.faceunity.wrapper.faceunity {*;} -keep class com.faceunity.wrapper.faceunity$RotatedImage {*;} -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\d5594233d50b1d727f4630790ca89a13\transformed\jetified-core-8.7.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\d5594233d50b1d727f4630790ca89a13\transformed\jetified-core-8.7.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt # Proguard rules specific to the core module. # Constructors accessed via reflection in DefaultRenderersFactory @@ -2951,8 +2953,8 @@ native ; (); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt # Copyright (C) 2019 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -2971,8 +2973,8 @@ native ; (); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt # Copyright (C) 2017 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -2992,8 +2994,8 @@ native ; androidx.transition.ChangeBounds$ViewBounds mViewBounds; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt # Copyright (C) 2016 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -3014,8 +3016,8 @@ native ; *** get*(); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -3051,8 +3053,8 @@ native ; java.lang.Object readResolve(); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt # Copyright (C) 2017 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -3076,8 +3078,8 @@ native ; -keep class androidx.media.** implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\c6ec9c31a3362678dbcc66f2e9ea7260\transformed\core-1.10.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\c6ec9c31a3362678dbcc66f2e9ea7260\transformed\core-1.10.1\proguard.txt # Never inline methods, but allow shrinking and obfuscation. -keepclassmembernames,allowobfuscation,allowshrinking class androidx.core.view.ViewCompat$Api* { ; @@ -3095,8 +3097,8 @@ native ; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\c6ec9c31a3362678dbcc66f2e9ea7260\transformed\core-1.10.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\c6ec9c31a3362678dbcc66f2e9ea7260\transformed\core-1.10.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt -keepattributes AnnotationDefault, RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations, @@ -3120,8 +3122,8 @@ native ; # this rule is need to work properly when app is compiled with api 28, see b/142778206 # Also this rule prevents registerIn from being inlined. -keepclassmembers class androidx.lifecycle.ReportFragment$LifecycleCallbacks { *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt # Proguard rules specific to the DataSource module. # Constant folding for resource integers may mean that a resource passed to this method appears to be unused. Keep the method to prevent this from happening. @@ -3135,8 +3137,8 @@ native ; (); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt # Proguard rules specific to the extractor module. # Methods accessed via reflection in DefaultExtractorsFactory @@ -3154,8 +3156,8 @@ native ; -dontwarn kotlin.annotations.jvm.** -dontwarn javax.annotation.** -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt # Proguard rules specific to the common module. # Don't warn about checkerframework and Kotlin annotations @@ -3179,30 +3181,30 @@ native ; # This is needed for ProGuard but not R8. -keepclassmembernames class com.google.common.base.Function { *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt -keep class * implements androidx.versionedparcelable.VersionedParcelable -keep public class android.support.**Parcelizer { *; } -keep public class androidx.**Parcelizer { *; } -keep public class androidx.versionedparcelable.ParcelImpl -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt -keep class * extends androidx.room.RoomDatabase -dontwarn androidx.room.paging.** -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\c4bf50f4bef00295f739a61609b757c2\transformed\jetified-transport-backend-cct-3.1.8\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\c4bf50f4bef00295f739a61609b757c2\transformed\jetified-transport-backend-cct-3.1.8\proguard.txt -dontwarn com.google.auto.value.AutoValue -dontwarn com.google.auto.value.AutoValue$Builder -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\c4bf50f4bef00295f739a61609b757c2\transformed\jetified-transport-backend-cct-3.1.8\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\c4bf50f4bef00295f739a61609b757c2\transformed\jetified-transport-backend-cct-3.1.8\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt -dontwarn com.google.auto.value.AutoValue -dontwarn com.google.auto.value.AutoValue$Builder -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt # This Proguard rule ensures that ComponentInitializers are are neither shrunk nor obfuscated. # This is because they are discovered and instantiated during application initialization. -keep class * extends androidx.startup.Initializer { @@ -3212,22 +3214,22 @@ native ; -assumenosideeffects class androidx.startup.StartupLogger -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt -dontwarn com.google.firebase.components.Component$Instantiation -dontwarn com.google.firebase.components.Component$ComponentType -keep class * implements com.google.firebase.components.ComponentRegistrar -keep,allowshrinking interface com.google.firebase.components.ComponentRegistrar -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\eb4fdf1a1abe4d45e8a1ea6c65e9f330\transformed\jetified-model-8.7.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\eb4fdf1a1abe4d45e8a1ea6c65e9f330\transformed\jetified-model-8.7.0\proguard.txt -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\eb4fdf1a1abe4d45e8a1ea6c65e9f330\transformed\jetified-model-8.7.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\eb4fdf1a1abe4d45e8a1ea6c65e9f330\transformed\jetified-model-8.7.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt # Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in /Developer/android-sdk-osx/tools/proguard/proguard-android.txt @@ -3249,8 +3251,8 @@ native ; -keep class io.github.inflationx.calligraphy3.* { *; } -keep class io.github.inflationx.calligraphy3.*$* { *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\6ee4aefc5377638487f62f6779665411\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\6ee4aefc5377638487f62f6779665411\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro -keep,allowobfuscation @interface androidx.annotation.Keep -keep @androidx.annotation.Keep class * {*;} @@ -3270,7 +3272,7 @@ native ; @androidx.annotation.DoNotInline ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\6ee4aefc5377638487f62f6779665411\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\6ee4aefc5377638487f62f6779665411\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro # The proguard configuration file for the following section is # End of content from \ No newline at end of file diff --git a/common/src/main/AndroidManifest.xml b/common/src/main/AndroidManifest.xml index 8c371f8a1..259970b64 100644 --- a/common/src/main/AndroidManifest.xml +++ b/common/src/main/AndroidManifest.xml @@ -25,7 +25,7 @@ srcList; + private List allDataList; private Context mContext; private boolean isChat = true; private OnRecyclerListRefreshListener> onRefreshListener; private Map timerMap = new HashMap<>(); + + public static final int FILTER_OFFLINE = 0; + public static final int FILTER_ONLINE = 1; + public static final int FILTER_UNREAD = 2; + public static final int FILTER_READ = 4; + public static final int FILTER_ALL = 7; + private int mFilter = FILTER_ALL; + + public int getFilter() { + return mFilter; + } + + public void setFilter(int mFilter) { + if (this.mFilter == mFilter) + return; + this.mFilter = mFilter; + + } + + public MainConversationListAdapter(Context mContext) { this.mContext = mContext; } public void setSrcList(List srcList) { this.srcList = srcList; - notifyDataSetChanged(); + if (mFilter== FILTER_OFFLINE || mFilter == FILTER_ONLINE) { + super.setDataCollection(UiConversationCodeUtil.FilterData(mFilter, allDataList)); + }else { + notifyDataSetChanged(); + } } public void setOnRefreshListener(OnRecyclerListRefreshListener> onRefreshListener) { @@ -87,7 +119,7 @@ public class MainConversationListAdapter extends ConversationListAdapter { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_main_msg_search_chat, parent, false); holder = ViewHolder.createViewHolder(parent.getContext(), view); } else if (viewType != -200) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rc_conversationlist_item, parent, false); + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rc_conversationlist_item2, parent, false); holder = ViewHolder.createViewHolder(parent.getContext(), view); } else { holder = super.onCreateViewHolder(parent, viewType); @@ -100,11 +132,13 @@ public class MainConversationListAdapter extends ConversationListAdapter { int type = super.getItemViewType(position); if (mDataList.size() > position) { String objectName = mDataList.get(position).mCore.getObjectName(); + Log.i("聊天数据源发现","objectName::"+objectName); if (!StringUtil.isEmpty(objectName) && objectName.startsWith("SEARCH_USER")) { type = TYPE_SEARCH_USER; } else if (!StringUtil.isEmpty(objectName) && objectName.startsWith("SEARCH_CHAT")) { type = TYPE_SEARCH_CHAT; } else if (!StringUtil.isEmpty(objectName) && objectName.startsWith("SEARCH_TITLE")) { + Log.i("聊天数据源发现 ","getItemViewTypeSEARCH_TITLE"); type = TYPE_SEARCH_TITLE; } } else if (mDataList.isEmpty() || isEmpty() || srcList.isEmpty()) { @@ -124,15 +158,76 @@ public class MainConversationListAdapter extends ConversationListAdapter { } else if (getItemViewType(position) == TYPE_SEARCH_CHAT) { bindChat(holder, position); } else if (getItemViewType(position) == TYPE_SEARCH_TITLE) { + Log.i("聊天数据源设置标题头","SEARCH_TITLE::"+position); bindTitle(holder, position); + return; } else if (getItemViewType(position) != -200) { + bindChatNew(holder, position); super.onBindViewHolder(holder, position); + return; } if (getItemViewType(position) != -200) { bindDefault(holder, position); } } + + private void bindChatNew(ViewHolder holder, int position) { + BaseUiConversation conversation = mDataList.get(position); + ImgLoader.display(holder.getContext(), conversation.mCore.getPortraitUrl(), holder.getView(R.id.rc_conversation_portrait)); + holder.setText(R.id.rc_conversation_title, conversation.mCore.getConversationTitle()); + ((TextView) holder.getView(R.id.rc_conversation_content)).setText(ChatMsgTypeUtils.getMsg(conversation.mConversationContent.toString())); + if (conversation.mCore.getSentTime() != -1 && holder.getView(R.id.rc_conversation_date) != null) { + holder.setText(R.id.rc_conversation_date, DateFormatUtil.getDateTimeString(conversation.mCore.getSentTime(), true, holder.getContext())); + holder.getView(R.id.rc_conversation_date).setVisibility(View.VISIBLE); + } else if (holder.getView(R.id.rc_conversation_date) != null) { + holder.getView(R.id.rc_conversation_date).setVisibility(View.GONE); + } + holder.setVisible(R.id.rc_conversation_live_online, "0".equals(conversation.mCore.getDraft())); + int unReadCount = conversation.mCore.getUnreadMessageCount(); + + if (unReadCount > 0) { + holder.setVisible(R.id.rc_conversation_unread_count, true); + holder.setText(R.id.rc_conversation_unread_count, String.valueOf(unReadCount)); + } else { + holder.setVisible(R.id.rc_conversation_unread_count, false); + } + + + Message message = conversation.mCore.getMessage(); + if (message != null && message.getMessageDirection() == Message.MessageDirection.SEND) { + holder.setVisible(R.id.rc_conversation_unread_tv, true); + if (conversation.mCore.getSentStatus() == Message.SentStatus.READ) { + holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.rc_secondary_color)); + holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_read_tip)); + } else { + holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.red)); + holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_unread_tip)); + } + } else { + holder.setVisible(R.id.rc_conversation_unread_tv, false); + } + + + if (holder.getView(R.id.rc_conversation_live_status) == null || IMLoginManager.get(holder.getContext()).getAnchorB() != 1) { + return; + } + Integer timer = timerMap.get(mDataList.get(position).mCore.getTargetId()); + if (timer == null) { + holder.getView(R.id.rc_conversation_live_status).setVisibility(View.GONE); + return; + } + if (timer >= 10) { + holder.setText(R.id.rc_conversation_live_status, + String.format(WordUtil.getNewString(R.string.message_chat_msg_look_live), timer) + ); + holder.getView(R.id.rc_conversation_live_status).setVisibility(View.VISIBLE); + } else { + holder.getView(R.id.rc_conversation_live_status).setVisibility(View.GONE); + } + } + + private void bindDefault(ViewHolder holder, int position) { BaseUiConversation conversation = mDataList.get(position); Log.i("列表", "bindDefault: 用户头像:" + conversation.mCore.getPortraitUrl()); @@ -171,7 +266,9 @@ public class MainConversationListAdapter extends ConversationListAdapter { } } + private void bindEmpty(ViewHolder holder, int position) { + Log.i("聊天数据源", "bindEmpty: "); if (isChat) { ViewUtils.findViewById(holder.itemView, R.id.imageView, ImageView.class).setImageResource(R.mipmap.ic_message_not_chat_list); ViewUtils.findViewById(holder.itemView, R.id.textView, TextView.class).setText(R.string.not_data_message_chat_list); @@ -183,18 +280,19 @@ public class MainConversationListAdapter extends ConversationListAdapter { public void onFinish() { if (onRefreshListener != null) { - Log.i("聊天数据源", "设置数据源: " + mDataList.size()); - onRefreshListener.onFinish(mDataList); + Log.i("聊天数据源", "设置数据源: " + allDataList.size()); + onRefreshListener.onFinish(allDataList); } } private int listHashCode = 0; - @Override - public synchronized void setDataCollection(List data) { + + public synchronized void setDataCollectionV2(List data, boolean isSearch) { if (data.hashCode() == listHashCode) return; listHashCode = data.hashCode(); List tmp = new ArrayList<>(); - Log.i("聊天数据源", "setDataCollection: " + data.hashCode()); + Log.i("聊天数据源", "size()" + data.size() + " setDataCollection: " + data.hashCode()); + List urls = new ArrayList<>(); if (srcList == null) { srcList = new ArrayList<>(); @@ -203,7 +301,8 @@ public class MainConversationListAdapter extends ConversationListAdapter { if (mContext == null) mContext = AppManager.getInstance().getLastActivity(); for (BaseUiConversation item : data) { - if (urls.contains(item.mCore.getTargetId())) continue; + if (urls.contains(item.mCore.getTargetId()) && item.mCore.getTargetId()!=null) continue; + // if ( item.mCore.getConversationTitle()==null || item.mCore.getTargetId()==null) continue; if (item.mConversationContent != null && item.mConversationContent.toString().contains("_method_")) { IMCenter.getInstance().deleteMessages(Conversation.ConversationType.PRIVATE, item.mCore.getTargetId(), @@ -222,7 +321,8 @@ public class MainConversationListAdapter extends ConversationListAdapter { IMCenter.getInstance().clearMessagesUnreadStatus(Conversation.ConversationType.PRIVATE, item.mCore.getTargetId(), null); } urls.add(item.mCore.getTargetId()); - Log.i("聊天数据源", item.mCore.getConversationTitle() + "|" + item.mCore.getPortraitUrl() + "|" + item.mCore.getTargetId()); + Log.i("聊天数据源", item.mCore.getConversationTitle() + "|" + item.mCore.getPortraitUrl() + "|" + item.mCore.getTargetId() +"|"+item.mCore.getObjectName()); + if (!tmpUids.contains(item.mCore.getTargetId())) { BaseUiConversation cn = new SingleConversation(mContext, item.mCore); srcList.add(cn); @@ -236,13 +336,37 @@ public class MainConversationListAdapter extends ConversationListAdapter { } tmp.add(item); } - // ToastUtil.showDebug("消息数:"+data.size()); - super.setDataCollection(tmp); + List showData = null; + if (isSearch) { + // Log.i("聊天数据源", "FilterData isSearch"); + showData = tmp ;//UiConversationCodeUtil.FilterData(mFilter, tmp, allDataList); + } else { + allDataList = tmp; + if (mFilter != FILTER_OFFLINE && mFilter != FILTER_ONLINE ) + { + // Log.i("聊天数据源", "FilterData notSearch"); + showData = UiConversationCodeUtil.FilterData(mFilter, allDataList); + } + } + if (showData != null && !UiConversationCodeUtil.checkIsSame(showData, mDataList)) { + // Log.i("聊天数据源", "数据源有变化" + showData.size()); + super.setDataCollection(showData); + } else { + // Log.i("聊天数据源", "数据源无变化"); + } } + + @Override + public void setDataCollection(List data) { + setDataCollectionV2(data, false); + } + + private List tmpUids = new ArrayList<>(); public void clear() { + Log.i("聊天数据源", "clear: " + mDataList.size()); mDataList.clear(); if (srcList != null) { srcList.clear(); @@ -349,15 +473,15 @@ public class MainConversationListAdapter extends ConversationListAdapter { BaseUiConversation conversation = mDataList.get(id); conversation.mCore.setSentTime(bean.getSentTime()); conversation.mCore.setUnreadMessageCount(integer); - if(bean.getContent() instanceof SightMessage){ - conversation.mConversationContent = new SpannableString(WordUtil.isNewZh()?"[小視頻]":"[Video]"); - }else if(bean.getContent() instanceof HQVoiceMessage){ - conversation.mConversationContent = new SpannableString(WordUtil.isNewZh()?"[語音]":"[Voice]"); - } else if(bean.getContent() instanceof ImageMessage){ - conversation.mConversationContent = new SpannableString(WordUtil.isNewZh()?"[圖片]":"[picture]"); - }else if(bean.getContent() instanceof MessageChatCardContent){ - conversation.mConversationContent = new SpannableString(WordUtil.isNewZh()?"[站內分享]":"[In-app sharing]"); - } else{ + if (bean.getContent() instanceof SightMessage) { + conversation.mConversationContent = new SpannableString(WordUtil.isNewZh() ? "[小視頻]" : "[Video]"); + } else if (bean.getContent() instanceof HQVoiceMessage) { + conversation.mConversationContent = new SpannableString(WordUtil.isNewZh() ? "[語音]" : "[Voice]"); + } else if (bean.getContent() instanceof ImageMessage) { + conversation.mConversationContent = new SpannableString(WordUtil.isNewZh() ? "[圖片]" : "[picture]"); + } else if (bean.getContent() instanceof MessageChatCardContent) { + conversation.mConversationContent = new SpannableString(WordUtil.isNewZh() ? "[站內分享]" : "[In-app sharing]"); + } else { conversation.mConversationContent = new SpannableString(((TextMessage) bean.getContent()).getContent()); } mDataList.set(id, conversation); @@ -375,4 +499,6 @@ public class MainConversationListAdapter extends ConversationListAdapter { }); } + + } diff --git a/common/src/main/java/com/yunbao/common/dialog/SudGameSearchDialogPopup.java b/common/src/main/java/com/yunbao/common/dialog/SudGameSearchDialogPopup.java index 659f64d60..93ecf5f30 100644 --- a/common/src/main/java/com/yunbao/common/dialog/SudGameSearchDialogPopup.java +++ b/common/src/main/java/com/yunbao/common/dialog/SudGameSearchDialogPopup.java @@ -56,7 +56,7 @@ public class SudGameSearchDialogPopup extends AbsDialogPopupWindow { @Override public void dismiss() { - Bus.getOff(this); + // Bus.getOff(this); super.dismiss(); } @@ -78,7 +78,7 @@ public class SudGameSearchDialogPopup extends AbsDialogPopupWindow { @Override protected void onCreate() { super.onCreate(); - Bus.getOn(this); +// Bus.getOn(this); editSearch = findViewById(R.id.edit_search); // listHistory = findViewById(R.id.list_history); listRoom = findViewById(R.id.list_room); diff --git a/common/src/main/java/com/yunbao/common/fragment/ChatViewModel.java b/common/src/main/java/com/yunbao/common/fragment/ChatViewModel.java new file mode 100644 index 000000000..66f0d4189 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/fragment/ChatViewModel.java @@ -0,0 +1,57 @@ +package com.yunbao.common.fragment; + +import android.app.Application; + +import androidx.annotation.NonNull; + +import androidx.lifecycle.ViewModel; + +import com.facebook.all.All; +import com.yunbao.common.R; +import com.yunbao.common.utils.UiConversationCodeUtil; + +public class ChatViewModel extends ViewModel { + + private int mChatFilter = UiConversationCodeUtil.FILTER_ALL; + + public int getChatFilter() { + return mChatFilter; + } + + public void setChatFilter(int mChatFilter) { + this.mChatFilter = mChatFilter; + } + +// public static final int FILTER_OFFLINE = 0; +// public static final int FILTER_ONLINE = 1; +// public static final int FILTER_UNREAD = 2; +// public static final int FILTER_READ = 4; +// public static final int FILTER_ALL = 7; +// All Chats +// Show Online +// Show Offline +// Show Read +// Show Unread + + public int getTitleTextId() { + int id = R.string.all_chats; + switch (mChatFilter) { + case UiConversationCodeUtil.FILTER_ALL: + id = R.string.all_chats; + break; + case UiConversationCodeUtil.FILTER_ONLINE: + id = R.string.online_only; + break; + case UiConversationCodeUtil.FILTER_OFFLINE: + id = R.string.offline_only; + break; + case UiConversationCodeUtil.FILTER_READ: + id = R.string.read_only; + break; + case UiConversationCodeUtil.FILTER_UNREAD: + id = R.string.unread_only; + break; + } + return id; + } +} diff --git a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java index 73d5f9132..abc219736 100644 --- a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java @@ -1,6 +1,8 @@ package com.yunbao.common.fragment; import android.os.Bundle; +import android.os.Parcel; +import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -9,11 +11,13 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; import com.yunbao.common.R; import com.yunbao.common.adapter.MainConversationListAdapter; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.UiConversationCodeUtil; import com.yunbao.common.utils.WordUtil; import java.util.ArrayList; @@ -26,16 +30,20 @@ import io.rong.imkit.conversationlist.model.SingleConversation; import io.rong.imkit.event.Event; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; +import io.rong.imlib.model.Message; +import io.rong.imlib.model.MessageContent; import io.rong.imlib.model.SearchConversationResult; public class MainMessageChatFragment extends ConversationListFragment { private static final String TAG = "融云列表"; int listHashCode = 0; +// ChatViewModel chatViewModel; @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { Log.i(TAG, "onCreateView: 创建融云"); +// chatViewModel = (ChatViewModel)(new ViewModelProvider(requireActivity())).get(ChatViewModel.class); return inflater.inflate(R.layout.rc_conversationlist_fragment, container, false); } @@ -46,10 +54,13 @@ public class MainMessageChatFragment extends ConversationListFragment { mConversationListViewModel.getConversationListLiveData().observe(this.getViewLifecycleOwner(), new Observer>() { @Override public void onChanged(List uiConversations) { - if (listHashCode != uiConversations.hashCode()) { - listHashCode = uiConversations.hashCode(); + int hashCode = UiConversationCodeUtil.getListHasCode(uiConversations); + if (listHashCode != hashCode) { + Log.i("nwq", "刷新数据"); + listHashCode = hashCode; ((MainConversationListAdapter) mAdapter).onFinish(); } + } }); mConversationListViewModel.getRefreshEventLiveData().observe(this.getViewLifecycleOwner(), new Observer() { @@ -58,7 +69,6 @@ public class MainMessageChatFragment extends ConversationListFragment { listHashCode = 0; } }); - } public void setEmptyView(int viewLayoutMsgId) { @@ -70,7 +80,16 @@ public class MainMessageChatFragment extends ConversationListFragment { } + public void refreshData() { + mRefreshLayout.autoRefresh(); + //onConversationListRefresh(mRefreshLayout) + } + public void search(String search) { + if (TextUtils.isEmpty(search)){ + mRefreshLayout.autoRefresh(); + return; + } ((MainConversationListAdapter) mAdapter).setSearch(); getContactsList(search); } @@ -84,10 +103,11 @@ public class MainMessageChatFragment extends ConversationListFragment { List uidList = new ArrayList<>(); BaseUiConversation conversation = new SingleConversation(getContext(), new Conversation()); + conversation.mCore.setMessage(new Message()); conversation.mCore.setObjectName("SEARCH_TITLE" + WordUtil.getNewString(R.string.activity_msg_list_title_contacts)); + Log.i("聊天数据源设置数据", "聊天数据源: " + conversation.mCore.getObjectName()); conversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE); list.add(conversation); - List data = new ArrayList<>(); System.err.println(" ----------------------->" + mAdapter.getData().size()); for (BaseUiConversation cn : ((MainConversationListAdapter) mAdapter).getSrcList()) { @@ -126,7 +146,9 @@ public class MainMessageChatFragment extends ConversationListFragment { @Override public void onSuccess(List searchConversationResults) { BaseUiConversation conversation = new SingleConversation(getContext(), new Conversation()); + conversation.mCore.setMessage(new Message()); conversation.mCore.setObjectName("SEARCH_TITLE" + WordUtil.getNewString(R.string.activity_msg_list_title_chat_records)); + Log.i("聊天数据源设置数据", "聊天数据源: " + conversation.mCore.getObjectName()); conversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE); list.add(conversation); List data = new ArrayList<>(); @@ -144,7 +166,10 @@ public class MainMessageChatFragment extends ConversationListFragment { list.remove(list.size() - 1); } list.addAll(data); - mAdapter.setDataCollection(list); + for (BaseUiConversation cn : list){ + Log.i("聊天数据源搜索前的", cn.mCore.getConversationTitle() + "|" + cn.mCore.getPortraitUrl() + "|" + cn.mCore.getTargetId()); + } + ((MainConversationListAdapter) mAdapter).setDataCollectionV2(list,true); } @Override @@ -156,17 +181,19 @@ public class MainMessageChatFragment extends ConversationListFragment { } public void onChatList() { - if(mConversationListViewModel==null)return; + if (mConversationListViewModel == null) return; ((MainConversationListAdapter) mAdapter).setChat(); ((MainConversationListAdapter) mAdapter).clear(); - System.out.println(">!>!>!>!!>"+mConversationListViewModel); + System.out.println(">!>!>!>!!>" + mConversationListViewModel); subscribeUi(); - + mRefreshLayout.autoRefresh(); } @Override protected ConversationListAdapter onResolveAdapter() { - this.mAdapter = new MainConversationListAdapter(getContext()); + MainConversationListAdapter adapter = new MainConversationListAdapter(getContext()); +// adapter.setFilter(chatViewModel.getChatFilter()); + this.mAdapter = adapter; return this.mAdapter; } } diff --git a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java index e479828d2..b85ed04ac 100644 --- a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java @@ -13,6 +13,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import com.yunbao.common.R; @@ -49,7 +50,7 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment public MainMessageChatListFragment(Context mContext) { this.mContext =mContext; } - + ChatViewModel chatViewModel; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -62,8 +63,10 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment @Override public void onResume() { super.onResume(); + chatViewModel = (new ViewModelProvider(requireActivity())).get(ChatViewModel.class); conversationListFragment = new MainMessageChatFragment(); setAdapter(conversationListFragment.getAdapter()); + mAdapter.setFilter(chatViewModel.getChatFilter()); FragmentManager manager = getChildFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.container, conversationListFragment); @@ -165,6 +168,16 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment } + public int getFilter() { + return mAdapter.getFilter(); + } + + public void setFilter(int mFilter) { + mAdapter.setFilter(mFilter); + chatViewModel.setChatFilter(mFilter); + conversationListFragment.refreshData(); + } + @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { diff --git a/common/src/main/java/com/yunbao/common/http/CommonHttpConsts.java b/common/src/main/java/com/yunbao/common/http/CommonHttpConsts.java index 396a8f719..5e650eaf7 100644 --- a/common/src/main/java/com/yunbao/common/http/CommonHttpConsts.java +++ b/common/src/main/java/com/yunbao/common/http/CommonHttpConsts.java @@ -20,7 +20,7 @@ public class CommonHttpConsts { public static final String DOWNLOAD_GIF = "downloadGif"; public static final String GET_BALANCE = "getBalance"; public static final String CHECK_TOKEN_INVALID = "checkTokenInvalid"; - public static final String NOTIFY_GOOGLE = "Charge.google_pay"; + public static final String NOTIFY_GOOGLE = "Charge.goole_validate_panduola"; public static final String COMMUNITY_SETREPORT = "Community.setReport"; public static final String GET_USER_HOME = "getUserHome"; diff --git a/common/src/main/java/com/yunbao/common/http/CommonHttpUtil.java b/common/src/main/java/com/yunbao/common/http/CommonHttpUtil.java index becf86858..fe6e05636 100644 --- a/common/src/main/java/com/yunbao/common/http/CommonHttpUtil.java +++ b/common/src/main/java/com/yunbao/common/http/CommonHttpUtil.java @@ -417,18 +417,15 @@ public class CommonHttpUtil { .params("purchaseToken", purchaseToken) .params("productId", productId) .params("orderno", orderno) - .params("package_name", "com.pandora.sy") + .params("package_name", CommonAppContext.sInstance.getPackageName()) .execute(callback); } - public static void notifyGoogle(String purchaseToken, String orderNo, String tradeNo, String allData, String gps_adid, HttpCallback callback) { + public static void notifyGoogle(String purchaseToken, String productId, HttpCallback callback) { HttpClient.getInstance().get(CommonHttpConsts.NOTIFY_GOOGLE, CommonHttpConsts.NOTIFY_GOOGLE) .params("purchaseToken", purchaseToken) - .params("orderno", orderNo) - .params("trade_no", tradeNo) - .params("allData", allData) - .params("gps_adid", gps_adid) - .params("package_name", "com.pandora.sy") + .params("productId", productId) + .params("package_name", CommonAppContext.sInstance.getPackageName()) .execute(callback); } @@ -437,7 +434,7 @@ public class CommonHttpUtil { .params("purchaseToken", purchaseToken) .params("orderno", orderNo) .params("trade_no", tradeNo) - .params("package_name", "com.pandora.sy") + .params("package_name", CommonAppContext.sInstance.getPackageName()) .execute(callback); } diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index 5e1aeff3c..0a804185d 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -1198,7 +1198,7 @@ public interface PDLiveApi { @Query("open_off") int status ); - @GET("/api/public/?service=Pdlmsg.sendBefore") + @GET("/api/public/?service=Pdlmsg.sendBefore&new_pop=1") Observable> getMessageSayHiTimer( ); diff --git a/common/src/main/java/com/yunbao/common/pay/google/GooglePlay.java b/common/src/main/java/com/yunbao/common/pay/google/GooglePlay.java new file mode 100644 index 000000000..db5fec7e9 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/pay/google/GooglePlay.java @@ -0,0 +1,297 @@ +package com.yunbao.common.pay.google; + +import android.app.Activity; +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.android.billingclient.api.BillingClient; +import com.android.billingclient.api.BillingClientStateListener; +import com.android.billingclient.api.BillingFlowParams; +import com.android.billingclient.api.BillingResult; +import com.android.billingclient.api.ConsumeParams; +import com.android.billingclient.api.ProductDetails; +import com.android.billingclient.api.Purchase; +import com.android.billingclient.api.PurchasesUpdatedListener; +import com.android.billingclient.api.QueryProductDetailsParams; +import com.android.billingclient.api.QueryPurchasesParams; +import com.google.android.gms.ads.identifier.AdvertisingIdClient; +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.GoogleApiAvailability; +import com.google.common.collect.ImmutableList; +import com.yunbao.common.CommonAppContext; +import com.yunbao.common.R; +import com.yunbao.common.http.CommonHttpUtil; +import com.yunbao.common.http.HttpCallback; + +import java.util.ArrayList; +import java.util.List; + +//谷歌支付 +public class GooglePlay implements PurchasesUpdatedListener { + + private String TAG = "mLog"; + private BillingClient billingClient; + private GoogleBillingListener billingListener; + + private GooglePlay() { + init(); + } + + private boolean init() { + if (getGoogleService() && billingClient == null) { + billingClient = BillingClient.newBuilder(CommonAppContext.sInstance) + .setListener(this) + .enablePendingPurchases() + .build(); + startConnection(); + return true; + } + if (billingClient != null && !billingClient.isReady()) {//没有连接的话去连接 + startConnection(); + } + if (billingClient == null) + return false; + return true; + } + + private void startConnection() { + if (!billingClient.isReady()) { + //请求连接到GooglePay + billingClient.startConnection(new BillingClientStateListener() { + @Override + public void onBillingSetupFinished(@NonNull BillingResult billingResult) { + int code = billingResult.getResponseCode(); + if (code != BillingClient.BillingResponseCode.OK) { + String msg = billingResult.getDebugMessage(); + Log.e(TAG, "连接到GooglePay失败 code = " + code + " msg = " + msg); + return; + } + Log.e(TAG, "连接到GooglePay成功"); + } + + //连接失败 + @Override + public void onBillingServiceDisconnected() { + Log.e(TAG, "连接到GooglePay失败,请重试"); + } + }); + } + } + + + //点击商品,先查询商品 然后出来支付界面,调用下单 + public void purchase(Activity activity, String orderNumber, String id) { + if (!init()) { + return; + } + ImmutableList productList = ImmutableList.of(QueryProductDetailsParams.Product.newBuilder() + .setProductId(id) + .setProductType(BillingClient.ProductType.INAPP) + .build()); + QueryProductDetailsParams queryProductDetailsParams = + QueryProductDetailsParams.newBuilder() + .setProductList(productList) + .build(); + billingClient.queryProductDetailsAsync( + queryProductDetailsParams, + (billingResult, list) -> { + //查询商品成功 + int code = billingResult.getResponseCode(); + if (code != BillingClient.BillingResponseCode.OK || list == null || list.isEmpty()) { + String msg = billingResult.getDebugMessage(); + Log.e(TAG, "查询商品失败 code = " + code + " msg = " + msg); + return; + } + Log.e(TAG, "查询商品成功"); + buyIt(activity, orderNumber, list.get(0)); + } + ); + } + + //开始下单,准备生成订单了 + private void buyIt(Activity activity, String orderNumber, ProductDetails productDetails) { + List productDetailsParamsList = new ArrayList<>(); + productDetailsParamsList.add(BillingFlowParams.ProductDetailsParams.newBuilder() + // retrieve a value for "productDetails" by calling queryProductDetailsAsync() + .setProductDetails(productDetails) + // For one-time products, "setOfferToken" method shouldn't be called. + // For subscriptions, to get an offer token, call + // ProductDetails.subscriptionOfferDetails() for a list of offers + // that are available to the user. + //一次性商品不需要传token +// .setOfferToken(selectedOfferToken) + .build()); + + BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() + .setProductDetailsParamsList(productDetailsParamsList) + .setObfuscatedAccountId(orderNumber)//好像是账号id + .build(); + + BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams); + int code = billingResult.getResponseCode(); + if (code != BillingClient.BillingResponseCode.OK) { + String msg = billingResult.getDebugMessage(); + Log.e(TAG, "购买商品失败 code = " + code + " msg = " + msg); +// ToastUtil.show(getString(R.string.pay_suc)); + return; + } + Log.e(TAG, "购买商品 " + productDetails.toString()); + } + + //消耗商品 支付成功之后,调用我们后台下发商品成功之后,调用消耗 + public void consume(List list) { + if (!init()) { + return; + } + for (Purchase purchase : list) { + getConsumeGoods(purchase); + } + } + + /** + * 消耗所有商品 + */ + public void consumeAll() { + if (!init()) { + return; + } + //以下示例展示了如何提取用户的订阅购买交易。请注意,queryPurchasesAsync() 仅返回有效订阅和非消耗型一次性购买交易。 + QueryPurchasesParams inAppPurchasesQuery = QueryPurchasesParams.newBuilder().setProductType(BillingClient.ProductType.INAPP).build(); + billingClient.queryPurchasesAsync(inAppPurchasesQuery, (billingResult, list) -> { + if (BillingClient.BillingResponseCode.OK == billingResult.getResponseCode()) { + for (Purchase purchase : list) { + //0:PurchaseState.UNSPECIFIED_STATE:未知状态 + //1:PurchaseState.PURCHASED:付款完成 + //2:PurchaseState.PENDING:购买正在等待付款完成。 + if (Purchase.PurchaseState.PURCHASED == purchase.getPurchaseState()) { + //调用google去消费 + //如果之后还出现谷歌掉单的行为在来处理 + CommonHttpUtil.notifyGoogle(purchase.getPurchaseToken(), + purchase.getProducts().get(0), new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0) { + getConsumeGoods(purchase); + } + } + }); + } + } + } + }); + } + + /** + * 公共消费商品接口 + */ + private void getConsumeGoods(Purchase purchase) { + if (purchase != null) { + Log.i(TAG, "-----开始消耗商品:" + purchase.toString()); + ConsumeParams.Builder consumeParams = ConsumeParams.newBuilder(); + consumeParams.setPurchaseToken(purchase.getPurchaseToken()); + //调用消耗商品方法 + consumeAsync(consumeParams.build(), purchase); + } + } + + /** + * 消耗商品 + * int SERVICE_TIMEOUT = -3; //服务超时 + * int FEATURE_NOT_SUPPORTED = -2; //不支持功能 + * int SERVICE_DISCONNECTED = -1; //服务单元已断开 + * int OK = 0; //成功 + * int USER_CANCELED = 1; //用户按上一步或取消对话框 + * int SERVICE_UNAVAILABLE = 2; //网络连接断开 + * int BILLING_UNAVAILABLE = 3; //所请求的类型不支持 Google Play 结算服务 AIDL 版本 + * int ITEM_UNAVAILABLE = 4; //请求的商品已不再出售。 + * int DEVELOPER_ERROR = 5; //提供给 API 的参数无效。此错误也可能说明应用未针对结算服务正确签名或设置,或者在其清单中缺少必要的权限。 + * int ERROR = 6; //API 操作期间出现严重错误 + * int ITEM_ALREADY_OWNED = 7; //未能购买,因为已经拥有此商品 + * int ITEM_NOT_OWNED = 8; //未能消费,因为尚未拥有此商品 + */ + private void consumeAsync(ConsumeParams consumeParams, Purchase purchase) { + if (!init()) { + return; + } + billingClient.consumeAsync(consumeParams, (billingResult, purchaseToken) -> { + if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) { + Log.i(TAG, "-----消耗商品成功"); + } else { + Log.i(TAG, "-----消耗商品失败" + billingResult.toString() + "---" + purchaseToken + "--code:" + billingResult.getResponseCode()); + } + }); + } + + @Override + public void onPurchasesUpdated(@NonNull BillingResult billingResult, @Nullable List purchases) { + if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK + && purchases != null) { + //支付成功 + if (billingListener != null)//消耗掉商品放到外面调用我们服务器成功的时候去消耗 todo 暂时注释掉 这样可以模拟掉单的问题 + billingListener.onPaySuccess(purchases); + /* + * 一旦您验证了购买交易,您的应用就可以向用户授予使用权了。若要确认与购买交易相关联的用户账号, + * 您可以使用 Purchases.products:get 返回的 ProductPurchase.obfuscatedExternalAccountId(适用于应用内商品的购买交易) + * 和 Purchases.subscriptions:get 返回的 SubscriptionPurchase.obfuscatedExternalAccountId(适用于服务器端的订阅), + * 或者 Purchase.getAccountIdentifiers() 在客户端返回的 obfuscatedAccountId(如果在交易时已使用 setObfuscatedAccountId 设置该 ID)。 + * */ +// purchases.get(0).getAccountIdentifiers() + for (Purchase purchase : purchases) { + Log.d("mLog", "谷歌支付的回调 " + purchase); + } + } else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) { + //取消支付了 + if (billingListener != null) + billingListener.onPayFailed(CommonAppContext.sInstance.getString(R.string.pay_cancel)); + } else { + //支付失败 + if (billingListener != null) + billingListener.onPayFailed(CommonAppContext.sInstance.getString(R.string.pay_fail)); + } + } + + /** + * 检测GooglePlay服务是否可用(需要导入包api "com.google.android.gms:play-services-location:11.8.0",也可以不检查,跳过这个代码) + */ + public boolean getGoogleService() { + GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance(); + if (googleApiAvailability != null) { + int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(CommonAppContext.sInstance); + return resultCode == ConnectionResult.SUCCESS; + } + return false; + } + + public String getAdId() { + try { + return AdvertisingIdClient.getAdvertisingIdInfo(CommonAppContext.sInstance).getId(); + } catch (Exception e) { + e.printStackTrace(); + Log.e("GooglePlay", "获取谷歌的id错误了"); + } + return "google_default_id"; + } + + public void setBillingListener(GoogleBillingListener listener) { + billingListener = listener; + } + + /** + * 定义接口返回支付结果 + */ + public interface GoogleBillingListener { + void onPaySuccess(List purchases); + + void onPayFailed(String msg); + } + + public static class GooglePlayHelper { + static GooglePlay googlePlay = new GooglePlay(); + } + + public static GooglePlay getInstance() { + return GooglePlayHelper.googlePlay; + } +} diff --git a/common/src/main/java/com/yunbao/common/utils/ProcessImageUtil.java b/common/src/main/java/com/yunbao/common/utils/ProcessImageUtil.java index 1c848afe0..541d223c6 100644 --- a/common/src/main/java/com/yunbao/common/utils/ProcessImageUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/ProcessImageUtil.java @@ -83,7 +83,7 @@ public class ProcessImageUtil extends ProcessResultUtil { if (mNeedCrop) { Uri uri = null; if (Build.VERSION.SDK_INT >= 24) { - uri = FileProvider.getUriForFile(mContext, "com.pandora.sy.fileprovider", mCameraResult); + uri = FileProvider.getUriForFile(mContext, mContext.getPackageName() +".fileprovider", mCameraResult); } else { uri = Uri.fromFile(mCameraResult); } @@ -195,7 +195,7 @@ public class ProcessImageUtil extends ProcessResultUtil { mCameraResult = getNewFile(); Uri uri = null; if (Build.VERSION.SDK_INT >= 24) { - uri = FileProvider.getUriForFile(mContext, "com.pandora.sy.fileprovider", mCameraResult); + uri = FileProvider.getUriForFile(mContext, mContext.getPackageName()+".fileprovider", mCameraResult); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); } else { uri = Uri.fromFile(mCameraResult); @@ -255,7 +255,7 @@ public class ProcessImageUtil extends ProcessResultUtil { startActivityForResult(intent, mCropResultCallback); } catch (Exception e) { try { - Uri resultUri = FileProvider.getUriForFile(mContext, "com.pandora.sy.fileprovider", mCorpResult); + Uri resultUri = FileProvider.getUriForFile(mContext, mContext.getPackageName()+".fileprovider", mCorpResult); if (resultUri == null || mFragment == null || mContext == null) { return; } diff --git a/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java new file mode 100644 index 000000000..a6f7220ed --- /dev/null +++ b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java @@ -0,0 +1,198 @@ +package com.yunbao.common.utils; + +import android.util.Log; + +import java.util.ArrayList; +import java.util.List; + +import io.rong.imkit.conversationlist.model.BaseUiConversation; +import io.rong.imlib.model.Conversation; +import io.rong.imlib.model.Message; + +public class UiConversationCodeUtil { + + + public static final int FILTER_OFFLINE = 0; + public static final int FILTER_ONLINE = 1; + public static final int FILTER_UNREAD = 2; + public static final int FILTER_READ = 4; + public static final int FILTER_ALL = 7; + + + public static boolean checkIsSame(List list1, List list2) { + if (list1.isEmpty()){ + return false; + } + if (list1.size() != list2.size()) return false; + int hashCode1 = getListHasCode(list1); + int hashCode2 = getListHasCode(list2); + return hashCode1 == hashCode2; + } + + public static boolean checkIsSame(int hashCode1, List list2) { + int hashCode2 = getListHasCode(list2); + return hashCode1 == hashCode2; + } + + public static int getListHasCode(List list) { + int hashCodeValue = 1; + if (list == null || list.isEmpty()) + return 1; + for (BaseUiConversation conversation : list) { + if (conversation != null) { + hashCodeValue = 31 * hashCodeValue + getBaseUiConversationHashCode(conversation); + } + } + return hashCodeValue; + } + + + //根据BaseUiConversation对象的属性计算hashCode + private static int getBaseUiConversationHashCode(BaseUiConversation item) { + final int prime = 31; + int result = 1; + Conversation mCore = item.mCore; + result = prime * result + ((mCore.getPortraitUrl() == null) ? 0 : mCore.getPortraitUrl().hashCode()); + result = prime * result + ((mCore.getConversationTitle() == null) ? 0 : mCore.getConversationTitle().hashCode()); + // result = prime * result + ((item.mConversationContent == null) ? 0 : item.mConversationContent.hashCode()); + result = prime * result + (int) (mCore.getSentTime() ^ (mCore.getSentTime() >>> 32)); + result = prime * result + ((mCore.getDraft() == null) ? 0 : mCore.getDraft().hashCode()); + result = prime * result + mCore.getUnreadMessageCount(); + + Message message = mCore.getMessage(); + if (message != null) { + Message.MessageDirection direction = message.getMessageDirection(); + if (direction != null) { + result = prime * result + direction.hashCode(); + } + } + + result = prime * result + ((mCore.getSentStatus() == null) ? 0 : mCore.getSentStatus().hashCode()); + result = prime * result + ((mCore.getReceivedStatus() == null) ? 0 : mCore.getReceivedStatus().hashCode()); + result = prime * result + ((mCore.getTargetId() == null) ? 0 : mCore.getTargetId().hashCode()); + return result; + } + + +private static boolean isContains(List list, BaseUiConversation item) { + // 根据 item.mCore.getChannelId() 判断 list 是否包含 + if (list == null || list.isEmpty() || item == null || item.mCore == null) { + return false; + } + for (BaseUiConversation conversation : list) { + // 增加空值检查 + if (conversation != null && conversation.mCore != null + && conversation.mCore.getTargetId() != null + && conversation.mCore.getTargetId().equals(item.mCore.getTargetId())) { + return true; + } + } + return false; +} + + + + public static List FilterData(int filterType, List keyList,List srcList) { + List showData = new ArrayList<>(); + if (keyList == null || keyList.isEmpty()) + return showData; + Log.i("MainConversationListAdapter", "FilterData: 源" + keyList.size()); + switch (filterType) { + case FILTER_ALL: + showData = keyList; + break; + case FILTER_ONLINE: + for (BaseUiConversation conversation : srcList) { + if ("0".equals(conversation.mCore.getDraft()) && isContains(keyList, conversation)) { + showData.add(conversation); + } + } + break; + case FILTER_OFFLINE: + for (BaseUiConversation conversation : keyList) { + if (!"0".equals(conversation.mCore.getDraft())) { + showData.add(conversation); + } + } + break; + case FILTER_READ: + for (BaseUiConversation conversation : keyList) + if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { + if (conversation.mCore.getSentStatus() == Message.SentStatus.READ) { + showData.add(conversation); + } + } + } + break; + case FILTER_UNREAD: + for (BaseUiConversation conversation : keyList) { + boolean isRead; + if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { + if (conversation.mCore.getSentStatus() != Message.SentStatus.READ) { + showData.add(conversation); + } + } + } + } + break; + } + Log.i("MainConversationListAdapter", "FilterData: 结果" + showData.size()); + return showData; + } + + + + + public static List FilterData(int filterType, List data) { + List showData = new ArrayList<>(); + if (data == null || data.isEmpty()) + return showData; + Log.i("MainConversationListAdapter", "设置数据源 FilterData: 源" + data.size()); + switch (filterType) { + case FILTER_ALL: + showData = data; + break; + case FILTER_ONLINE: + for (BaseUiConversation conversation : data) { + if ("0".equals(conversation.mCore.getDraft())) { + showData.add(conversation); + } + } + break; + case FILTER_OFFLINE: + for (BaseUiConversation conversation : data) { + if (!"0".equals(conversation.mCore.getDraft())) { + showData.add(conversation); + } + } + break; + case FILTER_READ: + for (BaseUiConversation conversation : data) + if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { + if (conversation.mCore.getSentStatus() == Message.SentStatus.READ) { + showData.add(conversation); + } + } + } + break; + case FILTER_UNREAD: + for (BaseUiConversation conversation : data) { + if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { + if (conversation.mCore.getSentStatus() != Message.SentStatus.READ) { + showData.add(conversation); + } + } + } + } + break; + } + Log.i("MainConversationListAdapter", " 设置数据源 FilterData: 结果" + showData.size()); + return showData; + } + + +} diff --git a/common/src/main/java/com/yunbao/common/utils/VersionUtil.java b/common/src/main/java/com/yunbao/common/utils/VersionUtil.java index 2cfa48347..64682556c 100644 --- a/common/src/main/java/com/yunbao/common/utils/VersionUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/VersionUtil.java @@ -63,7 +63,7 @@ public class VersionUtil { @Override public void onConfirmClick(Dialog dialog, String content) { Intent i = new Intent(android.content.Intent.ACTION_VIEW); - i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.pandora.sy")); + i.setData(Uri.parse("https://play.google.com/store/apps/details?id="+context.getPackageName())); context.startActivity(i); context.finish(); } @@ -85,7 +85,7 @@ public class VersionUtil { @Override public void onConfirmClick(Dialog dialog, String content) { Intent i = new Intent(android.content.Intent.ACTION_VIEW); - i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.pandora.sy")); + i.setData(Uri.parse("https://play.google.com/store/apps/details?id="+context.getPackageName())); context.startActivity(i); context.finish(); } diff --git a/common/src/main/java/com/yunbao/common/views/APKUpdateCustomPopup.java b/common/src/main/java/com/yunbao/common/views/APKUpdateCustomPopup.java index 9119f523b..5e70defa0 100644 --- a/common/src/main/java/com/yunbao/common/views/APKUpdateCustomPopup.java +++ b/common/src/main/java/com/yunbao/common/views/APKUpdateCustomPopup.java @@ -128,7 +128,7 @@ public class APKUpdateCustomPopup extends CenterPopupView { public void onViewClicks() { if (CommonAppConfig.IS_GOOGLE_PLAY == 1) { Intent i = new Intent(android.content.Intent.ACTION_VIEW); - i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.pandora.sy")); + i.setData(Uri.parse("https://play.google.com/store/apps/details?id="+mContext.getPackageName())); mContext.startActivity(i); mContext.finish(); } else if (CommonAppConfig.IS_GOOGLE_PLAY == 2) { diff --git a/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java b/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java new file mode 100644 index 000000000..d3e217aac --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java @@ -0,0 +1,122 @@ +package com.yunbao.common.views; + +import static io.rong.imlib.publicservice.model.PublicServiceMenu.PublicServiceMenuItemType.View; + +import android.content.Context; +import android.util.DisplayMetrics; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; + +import com.lxj.xpopup.core.AttachPopupView; +import com.yunbao.common.R; +import com.yunbao.common.adapter.MainConversationListAdapter; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import org.repackage.com.zui.opendeviceidlibrary.OpenDeviceId; + +public class MsgChatTypeSelectPoPupView extends AttachPopupView implements android.view.View.OnClickListener { + + private TextView chatTypeTv1, chatTypeTv2, chatTypeTv3, chatTypeTv4, chatTypeTv5; + private ImageView chatTypeImg1, chatTypeImg2, chatTypeImg3, chatTypeImg4, chatTypeImg5; + + private ResultCallBack mResultCallBack; + private int lastType; + + public MsgChatTypeSelectPoPupView(@NonNull Context context, int type, ResultCallBack itemDelListener) { + super(context); + mResultCallBack = itemDelListener; + lastType = type; + } + + + @Override + protected int getImplLayoutId() { + return R.layout.view_msg_select_chat_type; + } + + @Override + protected void onCreate() { + + // 获取屏幕宽度 + DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics(); + int screenWidth = displayMetrics.widthPixels; + + // 设置弹窗宽度为屏幕宽度的 3/4 + View view = findViewById(R.id.root); + ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); + layoutParams.width = screenWidth*3/4; + view.setLayoutParams(layoutParams); + + chatTypeTv1 = findViewById(R.id.chatTypeTv1); + chatTypeImg1 = findViewById(R.id.chatTypeImg1); + chatTypeTv2 = findViewById(R.id.chatTypeTv2); + chatTypeImg2 = findViewById(R.id.chatTypeImg2); + chatTypeTv3 = findViewById(R.id.chatTypeTv3); + chatTypeImg3 = findViewById(R.id.chatTypeImg3); + chatTypeTv4 = findViewById(R.id.chatTypeTv4); + chatTypeImg4 = findViewById(R.id.chatTypeImg4); + chatTypeTv5 = findViewById(R.id.chatTypeTv5); + chatTypeImg5 = findViewById(R.id.chatTypeImg5); + + chatTypeImg1.setOnClickListener(this); + chatTypeImg2.setOnClickListener(this); + chatTypeImg3.setOnClickListener(this); + chatTypeImg4.setOnClickListener(this); + chatTypeImg5.setOnClickListener(this); + + handleChatTypeClick(lastType); + } + + + private void handleChatTypeClick(int type) { + switch (type) { + case MainConversationListAdapter.FILTER_ALL: + chatTypeImg1.setImageResource(R.mipmap.ic_chat_type_select); + chatTypeTv1.setTextColor(ContextCompat.getColor(chatTypeTv1.getContext(), R.color.colorMainTab)); + break; + case MainConversationListAdapter.FILTER_ONLINE: + chatTypeImg2.setImageResource(R.mipmap.ic_chat_type_select); + chatTypeTv2.setTextColor(ContextCompat.getColor(chatTypeTv2.getContext(), R.color.colorMainTab)); + break; + case MainConversationListAdapter.FILTER_OFFLINE: + chatTypeImg3.setImageResource(R.mipmap.ic_chat_type_select); + chatTypeTv3.setTextColor(ContextCompat.getColor(chatTypeTv3.getContext(), R.color.colorMainTab)); + break; + case MainConversationListAdapter.FILTER_READ: + chatTypeImg4.setImageResource(R.mipmap.ic_chat_type_select); + chatTypeTv4.setTextColor(ContextCompat.getColor(chatTypeTv4.getContext(), R.color.colorMainTab)); + break; + case MainConversationListAdapter.FILTER_UNREAD: + chatTypeImg5.setImageResource(R.mipmap.ic_chat_type_select); + chatTypeTv5.setTextColor(ContextCompat.getColor(chatTypeTv5.getContext(), R.color.colorMainTab)); + break; + } + } + + @Override + public void onClick(android.view.View v) { + if (v.getId() == R.id.chatTypeImg1) { + mResultCallBack.callBack(MainConversationListAdapter.FILTER_ALL, chatTypeTv1.getText().toString()); + } else if (v.getId() == R.id.chatTypeImg2) { + mResultCallBack.callBack(MainConversationListAdapter.FILTER_ONLINE, chatTypeTv2.getText().toString()); + } else if (v.getId() == R.id.chatTypeImg3) { + mResultCallBack.callBack(MainConversationListAdapter.FILTER_OFFLINE, chatTypeTv3.getText().toString()); + } else if (v.getId() == R.id.chatTypeImg4) { + mResultCallBack.callBack(MainConversationListAdapter.FILTER_READ, chatTypeTv4.getText().toString()); + } else if (v.getId() == R.id.chatTypeImg5) { + mResultCallBack.callBack(MainConversationListAdapter.FILTER_UNREAD, chatTypeTv5.getText().toString()); + } + dismiss(); + } + + + public interface ResultCallBack { + void callBack(int i, String string); + } +} diff --git a/common/src/main/res/drawable/green_dot.xml b/common/src/main/res/drawable/green_dot.xml new file mode 100644 index 000000000..46fab62ef --- /dev/null +++ b/common/src/main/res/drawable/green_dot.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/common/src/main/res/drawable/red_dot.xml b/common/src/main/res/drawable/red_dot.xml new file mode 100644 index 000000000..39d9237fe --- /dev/null +++ b/common/src/main/res/drawable/red_dot.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/common/src/main/res/drawable/shape_white.xml b/common/src/main/res/drawable/shape_white.xml new file mode 100644 index 000000000..a9043c57d --- /dev/null +++ b/common/src/main/res/drawable/shape_white.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/rc_conversation_type_item.xml b/common/src/main/res/layout/rc_conversation_type_item.xml new file mode 100644 index 000000000..5b7fe7538 --- /dev/null +++ b/common/src/main/res/layout/rc_conversation_type_item.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/rc_conversationlist_item.xml b/common/src/main/res/layout/rc_conversationlist_item.xml index 30703b211..da3a74afc 100644 --- a/common/src/main/res/layout/rc_conversationlist_item.xml +++ b/common/src/main/res/layout/rc_conversationlist_item.xml @@ -14,7 +14,6 @@ android:id="@+id/rc_conversation_portrait_rl" android:layout_width="48dp" android:layout_height="48dp" - android:layout_marginTop="@dimen/rc_margin_size_12" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -180,6 +179,7 @@ android:layout_marginBottom="@dimen/rc_margin_size_12" android:src="@drawable/rc_read_receipt" android:visibility="gone" + tools:visibility="visible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/rc_conversation_no_disturb" app:layout_goneMarginRight="@dimen/rc_margin_size_12" /> diff --git a/common/src/main/res/layout/rc_conversationlist_item2.xml b/common/src/main/res/layout/rc_conversationlist_item2.xml new file mode 100644 index 000000000..1d65f5c7f --- /dev/null +++ b/common/src/main/res/layout/rc_conversationlist_item2.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/view_msg_select_chat_type.xml b/common/src/main/res/layout/view_msg_select_chat_type.xml new file mode 100644 index 000000000..694295563 --- /dev/null +++ b/common/src/main/res/layout/view_msg_select_chat_type.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/common/src/main/res/mipmap-mdpi/ic_chat_type_select.png b/common/src/main/res/mipmap-mdpi/ic_chat_type_select.png new file mode 100644 index 000000000..3f5330bc3 Binary files /dev/null and b/common/src/main/res/mipmap-mdpi/ic_chat_type_select.png differ diff --git a/common/src/main/res/mipmap-mdpi/ic_chat_type_unselect.png b/common/src/main/res/mipmap-mdpi/ic_chat_type_unselect.png new file mode 100644 index 000000000..8f04b106f Binary files /dev/null and b/common/src/main/res/mipmap-mdpi/ic_chat_type_unselect.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/ic_chat_type_select.png b/common/src/main/res/mipmap-xxhdpi/ic_chat_type_select.png new file mode 100644 index 000000000..b203b6426 Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/ic_chat_type_select.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/ic_chat_type_unselect.png b/common/src/main/res/mipmap-xxhdpi/ic_chat_type_unselect.png new file mode 100644 index 000000000..09da11206 Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/ic_chat_type_unselect.png differ diff --git a/common/src/main/res/mipmap-xxxhdpi/ic_chat_type_select.png b/common/src/main/res/mipmap-xxxhdpi/ic_chat_type_select.png new file mode 100644 index 000000000..f03e755b2 Binary files /dev/null and b/common/src/main/res/mipmap-xxxhdpi/ic_chat_type_select.png differ diff --git a/common/src/main/res/mipmap-xxxhdpi/ic_chat_type_unselect.png b/common/src/main/res/mipmap-xxxhdpi/ic_chat_type_unselect.png new file mode 100644 index 000000000..e68a3dd8f Binary files /dev/null and b/common/src/main/res/mipmap-xxxhdpi/ic_chat_type_unselect.png differ diff --git a/common/src/main/res/values-en-rUS/strings.xml b/common/src/main/res/values-en-rUS/strings.xml index 20c78fa58..c8bfab6c0 100644 --- a/common/src/main/res/values-en-rUS/strings.xml +++ b/common/src/main/res/values-en-rUS/strings.xml @@ -1489,4 +1489,11 @@ Limited ride And limited avatar frame * Non-real-time calculation of data Historical data can be viewed in the anchor center This live information + [Read] + [Unread] + All Chats + Show Online + Show Offline + Show Read + Show Unread diff --git a/common/src/main/res/values-zh/strings.xml b/common/src/main/res/values-zh/strings.xml index f317ff396..a110e1f5e 100644 --- a/common/src/main/res/values-zh/strings.xml +++ b/common/src/main/res/values-zh/strings.xml @@ -1619,4 +1619,11 @@ 歷史數據可在主播中心查看 本場直播信息 + [已讀] + [未讀] + 全部聊天 + 僅展示在線 + 僅展示離線 + 展示對方已讀 + 展示對方未讀 diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 47489669e..21428e159 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1427,4 +1427,11 @@ Limited ride And limited avatar frame * Non-real-time calculation of data Historical data can be viewed in the anchor center This live information + [Read] + [Unread] + All Chats + Show Online + Show Offline + Show Read + Show Unread diff --git a/gradle.properties b/gradle.properties index c41a7a913..03703df08 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,6 +24,6 @@ android.nonTransitiveRClass=false systemProp.http.proxyHost=127.0.0.1 systemProp.https.proxyHost=127.0.0.1 -systemProp.https.proxyPort=7890 -systemProp.http.proxyPort=7890 -#android.enableR8.fullMode=true \ No newline at end of file +systemProp.https.proxyPort=9098 +systemProp.http.proxyPort=9098 +android.enableR8.fullMode=true \ No newline at end of file diff --git a/main/google-services.json b/main/google-services.json deleted file mode 100644 index 293dd2490..000000000 --- a/main/google-services.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "project_info": { - "project_number": "867032862719", - "project_id": "pdlnew", - "storage_bucket": "pdlnew.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:867032862719:android:841a73fdfb6c37453ae1ca", - "android_client_info": { - "package_name": "com.pandora.sy" - } - }, - "oauth_client": [ - { - "client_id": "867032862719-af2dnojobjd8s6ekdr1is1vev8nk36sv.apps.googleusercontent.com", - "client_type": 1, - "android_info": { - "package_name": "com.pandora.sy", - "certificate_hash": "38cc19306c9facee36a9224e9a4070bc0be15c7d" - } - }, - { - "client_id": "867032862719-ohaa1f18e186qpasvgt7qkk1i1pivniq.apps.googleusercontent.com", - "client_type": 1, - "android_info": { - "package_name": "com.pandora.sy", - "certificate_hash": "b66dc8d21cfcf6c729577ddcf0c312b2a31ed872" - } - }, - { - "client_id": "867032862719-snpbqruvqcc9fsifjnmm1h3dcgtr8am4.apps.googleusercontent.com", - "client_type": 1, - "android_info": { - "package_name": "com.pandora.sy", - "certificate_hash": "15fc5e70cf238323bf7111c8c627803985478e87" - } - }, - { - "client_id": "867032862719-ep4r92lpjmn7gs9tg0r7q0l75a4gm9mt.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyAnlY2aBEGyg7QpghHo7EaMRkM89dVNgq8" - } - ], - "services": { - "appinvite_service": { - "other_platform_oauth_client": [ - { - "client_id": "867032862719-ep4r92lpjmn7gs9tg0r7q0l75a4gm9mt.apps.googleusercontent.com", - "client_type": 3 - } - ] - } - } - } - ], - "configuration_version": "1" -} \ No newline at end of file diff --git a/main/src/main/java/com/yunbao/main/activity/EntryActivity.java b/main/src/main/java/com/yunbao/main/activity/EntryActivity.java index df1af477c..e223a0e15 100644 --- a/main/src/main/java/com/yunbao/main/activity/EntryActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/EntryActivity.java @@ -441,7 +441,7 @@ public class EntryActivity extends AppCompatActivity { } else if (loginType == 4) { try { // App-to-app login - Intent loginIntent = LineLoginApi.getLoginIntent(findViewById(R.id.btn_line).getContext(), "1656399535", new LineAuthenticationParams.Builder().scopes(Arrays.asList(Scope.PROFILE)) + Intent loginIntent = LineLoginApi.getLoginIntent(findViewById(R.id.btn_line).getContext(), "2006124380", new LineAuthenticationParams.Builder().scopes(Arrays.asList(Scope.PROFILE)) // .nonce("") // nonce can be used to improve security .build()); startActivityForResult(loginIntent, 1001); diff --git a/main/src/main/java/com/yunbao/main/activity/GoogleFragment.java b/main/src/main/java/com/yunbao/main/activity/GoogleFragment.java index 3c2ddda23..c0519899e 100644 --- a/main/src/main/java/com/yunbao/main/activity/GoogleFragment.java +++ b/main/src/main/java/com/yunbao/main/activity/GoogleFragment.java @@ -1,8 +1,6 @@ package com.yunbao.main.activity; -import static com.yunbao.main.activity.MyWalletActivity.dis; - import android.annotation.SuppressLint; import android.os.Bundle; import android.os.Handler; @@ -16,15 +14,17 @@ import android.webkit.WebView; import androidx.fragment.app.Fragment; -import com.facebook.appevents.AppEventsConstants; +import com.android.billingclient.api.Purchase; import com.yunbao.common.http.CommonHttpUtil; import com.yunbao.common.http.HttpCallback; -import com.yunbao.common.utils.GoogleUtils; +import com.yunbao.common.pay.google.GooglePlay; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.main.R; import com.yunbao.main.views.TestWebViewClient; +import java.util.List; + @SuppressLint("ValidFragment") public class GoogleFragment extends Fragment { @@ -38,7 +38,7 @@ public class GoogleFragment extends Fragment { private String url; String adid = null; - GoogleUtils googleUtils; + private GooglePlay googlePlay; boolean isGoogleService = true; @@ -62,17 +62,16 @@ public class GoogleFragment extends Fragment { Log.e("ttt", url); rlWebview.loadUrl(url); - googleUtils = new GoogleUtils(getActivity()); + googlePlay = GooglePlay.getInstance(); // 验证是否已在此设备上安装并启用Google Play服务,以及此设备上安装的旧版本是否为此客户端所需的版本 - if (googleUtils.getGoogleService()) { + if (googlePlay.getGoogleService()) { isGoogleService = true; // 支持Google服务 - initGooglePay(); new Thread() { @Override public void run() { - adid = googleUtils.getAdid(); + adid = googlePlay.getAdId(); } }.start(); } @@ -100,11 +99,6 @@ public class GoogleFragment extends Fragment { String TAG = "GooglePay"; - private void initGooglePay() { - googleUtils = new GoogleUtils(getActivity()); - googleUtils.initGooglePay(); - } - private Handler payHandler = new Handler(); //js调用原生 @@ -117,51 +111,31 @@ public class GoogleFragment extends Fragment { mProductId = ProductId; mOrderid = OrderNumber; MoneyUsds = MoneyUsd; - - googleUtils.setBillingListener(new GoogleUtils.GoogleBillingListener() { + googlePlay.setBillingListener(new GooglePlay.GoogleBillingListener() { @Override - public void onPaySuccess(String token, String orderId) { - payHandler.post(new Runnable() { - @Override - public void run() { - CommonHttpUtil.notifyGoogle(token, orderId, mProductId, mOrderid, adid, new HttpCallback() { + public void onPaySuccess(List purchases) { + Log.i("mLog", "调用谷歌支付成功了 " + purchases.toString()); + CommonHttpUtil.notifyGoogle(purchases.get(0).getPurchaseToken(), + purchases.get(0).getProducts().get(0), new HttpCallback() { @Override public void onSuccess(int code, String msg, String[] info) { if (code == 0) { - Bundle params = new Bundle(); - params.putString("currency", "HKD"); - params.putString("money", MoneyUsds); - Bundle fb_params = new Bundle(); - fb_params.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "HKD"); - fb_params.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, mProductId); - //Google官方充值通知 - Bundle google_params = new Bundle(); - google_params.putString("currency", "HKD"); - google_params.putString("product_id", mProductId); - google_params.putString("transaction_id", mOrderid); - google_params.putString("value", MoneyUsds); - google_params.putString("price", MoneyUsds); - google_params.putString("quantity", "1"); - dis(); + googlePlay.consume(purchases); + getActivity().finish(); ToastUtil.show(getString(R.string.pay_suc)); + } else { + ToastUtil.show(msg); } } }); - } - }); } @Override public void onPayFailed(String msg) { - payHandler.post(new Runnable() { - @Override - public void run() { - ToastUtil.show(msg); - } - }); + ToastUtil.show(msg); } }); - googleUtils.purchase(mProductId); + googlePlay.purchase(getActivity(), mOrderid, mProductId); } lastClickTime = currentTime; diff --git a/main/src/main/java/com/yunbao/main/activity/MyWalletActivity.java b/main/src/main/java/com/yunbao/main/activity/MyWalletActivity.java index 2255da348..d13018967 100644 --- a/main/src/main/java/com/yunbao/main/activity/MyWalletActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MyWalletActivity.java @@ -18,17 +18,18 @@ import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager.widget.ViewPager; import com.alibaba.android.arouter.facade.annotation.Route; -import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.activity.AbsActivity; import com.yunbao.common.fragment.LoadingDialog; import com.yunbao.common.http.CommonHttpUtil; import com.yunbao.common.http.HttpCallback; import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.pay.google.GooglePlay; import com.yunbao.common.pay.hw.HwBuilder; import com.yunbao.common.pay.samsung.SamsungUtil; import com.yunbao.common.utils.GoogleUtils; import com.yunbao.common.utils.L; +import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.main.R; @@ -62,7 +63,7 @@ public class MyWalletActivity extends AbsActivity { public static String orderId; HwBuilder hwBuilder; - GoogleUtils googleUtils; + private GooglePlay googlePlay; LoadingDialog loadingDialog; SamsungUtil samsungUtil; @@ -78,17 +79,15 @@ public class MyWalletActivity extends AbsActivity { mw = MyWalletActivity.this; setTitle(mContext.getString(R.string.wallet)); - if (CommonAppConfig.IS_GOOGLE_PLAY == 1) { - googleUtils = new GoogleUtils(mContext); - googleUtils.initGooglePay(); - } else if (CommonAppConfig.IS_GOOGLE_PLAY == 2) { + if (CommonAppConfig.IS_GOOGLE_PLAY == 2) { hwBuilder = new HwBuilder(MyWalletActivity.this); } else if (CommonAppConfig.IS_GOOGLE_PLAY == 3) { samsungUtil = SamsungUtil.newInstance(mContext); samsungUtil.init(); - }else{ - googleUtils = new GoogleUtils(mContext); - googleUtils.initGooglePay(); + } else { + googlePlay = GooglePlay.getInstance(); + //消耗所有商品 + googlePlay.consumeAll(); } @@ -104,50 +103,8 @@ public class MyWalletActivity extends AbsActivity { loadingDialog.setShowText(getString(R.string.order_query)); if (CommonAppConfig.IS_GOOGLE_PLAY == 1) { - googleUtils.setQueryPurchaseListener(mContext, new GoogleUtils.QueryPurchasesListener() { - @Override - public void onResult(JSONObject obj) { - try { - int code = obj.getInt("querySize"); - if (code == 0) { - payHandler.post(runnable1); - payHandler.postDelayed(runnable2, 1000); - } else { - JSONArray tokenList = obj.getJSONArray("tokenList"); - JSONArray orderList = obj.getJSONArray("orderList"); - String tradeNo = obj.getString("tradeNo"); - - for (int i = 0; i < tokenList.length(); i++) { - int finalI = i; - payHandler.post(new Runnable() { - @Override - public void run() { - //谷歌掉单处理 - try { - CommonHttpUtil.Google_sec_pay(tokenList.getString(finalI), orderList.getString(finalI), tradeNo, new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (finalI == tokenList.length() - 1) { - loadingDialog.setShowText(getString(R.string.order_query_success)); - loadingDialog.dismiss(); - } - ToastUtil.show("充值已到账"); - finish(); - } - }); - } catch (JSONException e) { - e.printStackTrace(); - } - } - }); - } - } - } catch (JSONException e) { - e.printStackTrace(); - } - } - }); - googleUtils.queryPurchasesAsync(); + //消耗所有商品 + googlePlay.consumeAll(); } else if (CommonAppConfig.IS_GOOGLE_PLAY == 2) { hwBuilder.consume(); payHandler.post(runnable1); @@ -186,12 +143,12 @@ public class MyWalletActivity extends AbsActivity { googleFragment1 = new GoogleFragment(); Bundle bundle1 = new Bundle(); - bundle1.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaycoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); + bundle1.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaycoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); googleFragment1.setArguments(bundle1); googleFragment2 = new GoogleFragment(); Bundle bundle2 = new Bundle(); - bundle2.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaygole&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); + bundle2.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaygole&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); googleFragment2.setArguments(bundle2); } else if (CommonAppConfig.IS_GOOGLE_PLAY == 2) { //华为 @@ -203,12 +160,12 @@ public class MyWalletActivity extends AbsActivity { huaWeiFragment1 = new HuaWeiFragment(); Bundle bundle1 = new Bundle(); - bundle1.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/huaweipaycoin.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd"); + bundle1.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/huaweipaycoin.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo"); huaWeiFragment1.setArguments(bundle1); huaWeiFragment2 = new HuaWeiFragment(); Bundle bundle2 = new Bundle(); - bundle2.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/huaweipaygole.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd"); + bundle2.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/huaweipaygole.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo"); huaWeiFragment2.setArguments(bundle2); } else if (CommonAppConfig.IS_GOOGLE_PLAY == 3) { @@ -271,12 +228,12 @@ public class MyWalletActivity extends AbsActivity { huaWeiFragment1 = new HuaWeiFragment(); Bundle bundle1 = new Bundle(); - bundle1.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/huaweipaycoin.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd"); + bundle1.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/huaweipaycoin.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo"); huaWeiFragment1.setArguments(bundle1); huaWeiFragment2 = new HuaWeiFragment(); Bundle bundle2 = new Bundle(); - bundle2.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/huaweipaygole.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd"); + bundle2.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/huaweipaygole.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo"); huaWeiFragment2.setArguments(bundle2); } else if (CommonAppConfig.IS_GOOGLE_PLAY == 3) { rView.setVisibility(View.VISIBLE); @@ -287,12 +244,12 @@ public class MyWalletActivity extends AbsActivity { samsungFragment1 = new SamsungFragment(); Bundle bundle1 = new Bundle(); - bundle1.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/samsungpaycoin.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); + bundle1.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/samsungpaycoin.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); samsungFragment1.setArguments(bundle1); samsungFragment2 = new SamsungFragment(); Bundle bundle2 = new Bundle(); - bundle2.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/samsungpaygole.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); + bundle2.putString("url", CommonAppConfig.HOST + "/themes/simplebootx/appapi/mall/samsungpaygole.html?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); samsungFragment2.setArguments(bundle2); } else { Log.i("tss", "不是首充"); @@ -300,17 +257,17 @@ public class MyWalletActivity extends AbsActivity { walletFragment = new WalletFragment(); Bundle bundle = new Bundle(); - bundle.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletbean&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); + bundle.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletbean&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); walletFragment.setArguments(bundle); googleFragment1 = new GoogleFragment(); Bundle bundle1 = new Bundle(); - bundle1.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletcoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); + bundle1.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletcoin&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); googleFragment1.setArguments(bundle1); googleFragment2 = new GoogleFragment(); Bundle bundle2 = new Bundle(); - bundle2.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletgold&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=pd" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); + bundle2.putString("url", CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=walletgold&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&package_name=panduo" + "&isZh=" + ((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0")); googleFragment2.setArguments(bundle2); } } @@ -491,7 +448,7 @@ public class MyWalletActivity extends AbsActivity { } catch (JSONException e) { - e.printStackTrace(); + throw new RuntimeException(e); } } diff --git a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java index 220d8341a..10a092bb6 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -32,9 +32,11 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.constraintlayout.widget.Group; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.lifecycle.ViewModelProvider; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.widget.ViewPager2; @@ -43,12 +45,15 @@ import com.binioter.guideview.Guide; import com.binioter.guideview.GuideBuilder; import com.facebook.appevents.AppEventsLogger; import com.lxj.xpopup.XPopup; +import com.lxj.xpopup.core.BasePopupView; import com.lxj.xpopup.enums.PopupPosition; +import com.lxj.xpopup.interfaces.XPopupCallback; import com.opensource.svgaplayer.SVGADrawable; import com.opensource.svgaplayer.SVGAImageView; import com.opensource.svgaplayer.SVGAParser; import com.opensource.svgaplayer.SVGAVideoEntity; import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.fragment.ChatViewModel; import com.yunbao.common.fragment.MainMessageRecommendFragment; import com.yunbao.common.utils.DebugUtils; import com.yunbao.common.utils.DialogUitl; @@ -73,6 +78,7 @@ import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ViewPageIndicatorUtils; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.views.AbsMainViewHolder; +import com.yunbao.common.views.MsgChatTypeSelectPoPupView; import com.yunbao.common.views.MsgRecommendPopupView; import com.yunbao.common.views.MsgSysDelPopupView; import com.yunbao.common.views.weight.ViewClicksAntiShake; @@ -132,17 +138,20 @@ public class MainMessageViewHolder extends AbsMainViewHolder { private MagicIndicator mIndicator; private List fragmentList; - private ConstraintLayout tabLayout1, tabLayout2, tabLayout3; + private Group tabLayout1, tabLayout2, tabLayout3; private TextView tab1, tab2, tab3; + private ImageView imageView1, imageView2, imageView3; private View tab_line1, tab_line2, tab_line3; private ImageView tab_icon; - private List relativeLayouts = new ArrayList<>(); + private List relativeLayouts = new ArrayList<>(); private List tabTexts = new ArrayList<>(); private List tabLine = new ArrayList<>(); - private LinearLayout tabLayouts; + private List tabExpend = new ArrayList<>(); + private ConstraintLayout tabLayouts; private int userType = 0; // (0)普通用户 (1)主播A (2)主播B + ChatViewModel chatViewModel; public MainMessageViewHolder setHomeZdyPop(String homeZdyPop) { this.homeZdyPop = homeZdyPop; @@ -156,6 +165,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { public MainMessageViewHolder(MainActivity context, ViewGroup parentView) { super(context, parentView); mContext = context; + chatViewModel= (new ViewModelProvider(mContext)).get(ChatViewModel.class); } @Override @@ -193,14 +203,28 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabLayouts = findViewById(R.id.tabLayouts); tab_icon = findViewById(R.id.tab_icon); - tabLayout1 = findViewById(R.id.tabLayout1); - tabLayout2 = findViewById(R.id.tabLayout2); - tabLayout3 = findViewById(R.id.tabLayout3); + tabLayout1 = findViewById(R.id.group_tab1); + tabLayout2 = findViewById(R.id.group_tab2); + tabLayout3 = findViewById(R.id.group_tab3); tab1 = findViewById(R.id.tab1); tab2 = findViewById(R.id.tab2); tab3 = findViewById(R.id.tab3); + imageView1 = findViewById(R.id.expendImg1); + imageView2 = findViewById(R.id.expendImg2); + imageView3 = findViewById(R.id.expendImg3); + + imageView1.setOnClickListener(view -> { + selectChatType(view, 0); + }); + imageView2.setOnClickListener(view -> { + selectChatType(view, 1); + }); + imageView3.setOnClickListener(view -> { + selectChatType(view, 2); + }); + tab_line1 = findViewById(R.id.tab_line1); tab_line2 = findViewById(R.id.tab_line2); tab_line3 = findViewById(R.id.tab_line3); @@ -224,6 +248,73 @@ public class MainMessageViewHolder extends AbsMainViewHolder { }); } + private void selectChatType(View view, int position) { + AbsMainMessageChatListFragment fragment = fragmentList.get(position); + if (!(fragment instanceof MainMessageChatListFragment) || !(view instanceof ImageView)) { + return; + } + MainMessageChatListFragment chatFragment = (MainMessageChatListFragment) fragment; + ImageView expendImg = (ImageView) view; + expendImg.setImageResource(R.mipmap.ic_expend_up); + XPopup.Builder builder = new XPopup.Builder(mContext).atView(tabTexts.get(position)); + builder.offsetY(16); + builder.dismissOnTouchOutside(true); + builder.setPopupCallback(new XPopupCallback() { + @Override + public void onCreated(BasePopupView popupView) { + } + + @Override + public void beforeShow(BasePopupView popupView) { + + } + + @Override + public void onShow(BasePopupView popupView) { + + } + + @Override + public void onDismiss(BasePopupView popupView) { + expendImg.setImageResource(R.mipmap.ic_expend_down); + } + + @Override + public void beforeDismiss(BasePopupView popupView) { + + } + + @Override + public boolean onBackPressed(BasePopupView popupView) { + return false; + } + + @Override + public void onKeyBoardStateChanged(BasePopupView popupView, int height) { + + } + + @Override + public void onDrag(BasePopupView popupView, int value, float percent, boolean upOrLeft) { + + } + + @Override + public void onClickOutside(BasePopupView popupView) { + + } + }); + builder.asCustom(new MsgChatTypeSelectPoPupView(mContext, chatFragment.getFilter(), new MsgChatTypeSelectPoPupView.ResultCallBack() { + @Override + public void callBack(int i,String str) { + tabTexts.get(position).setText(str); + chatFragment.setFilter(i); + } + })).show(); + + } + + private void initFragment() { final String[] titles; fragmentList = new ArrayList<>(); @@ -264,9 +355,9 @@ public class MainMessageViewHolder extends AbsMainViewHolder { return fragmentList.get(i); } }); - if(userType==1){ + if (userType == 1) { viewPager.setCurrentItem(1); - }else{ + } else { viewPager.setCurrentItem(0); } viewPager.setUserInputEnabled(false); @@ -340,7 +431,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { @Override public void onPageSelected(int position) { super.onPageSelected(position); - if(!StringUtil.isEmpty(search.getText().toString())) { + if (!StringUtil.isEmpty(search.getText().toString())) { search.setText(""); } selectTab(position); @@ -369,6 +460,12 @@ public class MainMessageViewHolder extends AbsMainViewHolder { }); } + + private void showChatTypeSelect() { + + } + + private void initTabView() { relativeLayouts = new ArrayList<>(); tabTexts = new ArrayList<>(); @@ -382,14 +479,19 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabTexts.add(tab2); tabTexts.add(tab3); + tabExpend.add(imageView1); + tabExpend.add(imageView2); + tabExpend.add(imageView3); + tabLine.add(tab_line1); tabLine.add(tab_line2); tabLine.add(tab_line3); if (userType == 0) { //普通用户 relativeLayouts.get(0).setVisibility(View.VISIBLE); - tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_all_an_a)); + tabTexts.get(0).setText(WordUtil.getNewString(chatViewModel.getTitleTextId())); ViewGroup.LayoutParams params = tabLayouts.getLayoutParams(); params.width = LinearLayout.LayoutParams.WRAP_CONTENT; + //tabExpend.get(0).setVisibility(View.VISIBLE); tabLayouts.setLayoutParams(params); } else if (userType == 1) {//主播A tab_icon.setVisibility(View.VISIBLE); @@ -409,10 +511,12 @@ public class MainMessageViewHolder extends AbsMainViewHolder { relativeLayouts.get(0).setVisibility(View.VISIBLE); tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_recommend)); relativeLayouts.get(1).setVisibility(View.VISIBLE); - tabTexts.get(1).setText(WordUtil.getNewString(R.string.message_chat_msg_all_an_a)); + tabTexts.get(1).setText(WordUtil.getNewString(chatViewModel.getTitleTextId())); + // tabExpend.get(1).setVisibility(View.VISIBLE); } else { //主播B + tabExpend.get(0).setVisibility(View.VISIBLE); relativeLayouts.get(0).setVisibility(View.VISIBLE); - tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_all)); + tabTexts.get(0).setText(WordUtil.getNewString(chatViewModel.getTitleTextId())); relativeLayouts.get(1).setVisibility(View.VISIBLE); tabTexts.get(1).setText(WordUtil.getNewString(R.string.message_chat_msg_system)); relativeLayouts.get(2).setVisibility(View.VISIBLE); @@ -420,7 +524,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { } for (int i = 0; i < relativeLayouts.size(); i++) { int finalI = i; - relativeLayouts.get(i).setOnClickListener(new View.OnClickListener() { + tabTexts.get(i).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { selectTab(finalI); @@ -428,9 +532,9 @@ public class MainMessageViewHolder extends AbsMainViewHolder { } }); } - if(userType==1){ + if (userType == 1) { selectTab(1); - }else{ + } else { selectTab(0); } } diff --git a/main/src/main/res/layout/activity_entry.xml b/main/src/main/res/layout/activity_entry.xml index 98746db2c..88a886002 100644 --- a/main/src/main/res/layout/activity_entry.xml +++ b/main/src/main/res/layout/activity_entry.xml @@ -191,8 +191,7 @@ android:layout_height="57dp" android:layout_gravity="center" android:layout_weight="1" - android:src="@mipmap/login_line" - android:visibility="visible" /> + android:src="@mipmap/login_line" /> - + android:paddingStart="12dp" + android:paddingEnd="12dp"> - + + + + + + + + + + + + + + + + + android:padding="5dp" + android:src="@mipmap/ic_expend_down" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="@+id/tab2" + app:layout_constraintStart_toEndOf="@+id/tab2" + app:layout_constraintTop_toTopOf="@+id/tab2" + tools:visibility="gone" /> - - - - - - - - - - - - + + + + + + + + + android:padding="5dp" + android:src="@mipmap/ic_expend_down" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="@+id/tab3" + app:layout_constraintStart_toEndOf="@+id/tab3" + app:layout_constraintTop_toTopOf="@+id/tab3" + tools:visibility="gone" /> - - - - - - - - - - - - - - - - - - - + app:constraint_referenced_ids="view3,tab3,tab_line3"/> + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +