Ver código fonte

Merge branch 'google' into qiye

honghengqiang 2 anos atrás
pai
commit
a784389c5b
34 arquivos alterados com 325 adições e 33 exclusões
  1. 2 0
      app/src/main/java/com/swago/app/SplashActivity.kt
  2. 2 0
      baseswago/build.gradle
  3. 1 1
      baseswago/src/main/java/com/swago/baseswago/baseroom/widget/XPagerSnapHelper.java
  4. 1 0
      baseswago/src/main/java/com/swago/baseswago/model/im/RoomChatMsgBean.java
  5. 35 1
      baseswago/src/main/java/com/swago/baseswago/model/live/gift/GiftModel.java
  6. 3 0
      baseswago/src/main/java/com/swago/baseswago/util/SwagoInfo.kt
  7. 20 0
      baseswago/src/main/java/com/swago/glide.kt
  8. BIN
      baseswago/src/main/res/mipmap-ar-xxhdpi/back.png
  9. BIN
      baseswago/src/main/res/mipmap-ar-xxhdpi/more_small.png
  10. 186 0
      baseswago/src/main/res/values-ar/strings.xml
  11. 19 5
      home/src/main/java/com/swago/home/innerhome/HomeGridItemDecoration.kt
  12. 1 1
      home/src/main/res/layout/activity_home.xml
  13. 1 1
      home/src/main/res/layout/fragment_home.xml
  14. 6 0
      login/src/main/java/com/swago/login/LoginActivity.kt
  15. 1 0
      login/src/main/res/layout/activity_login.xml
  16. 10 6
      room/src/main/java/com/swago/room/adapter/RoomChatAdapter.kt
  17. 2 0
      room/src/main/java/com/swago/room/dialog/SendMsgDialog.kt
  18. 14 1
      room/src/main/java/com/swago/room/gift/GiftAdapter.kt
  19. 1 4
      room/src/main/java/com/swago/room/gift/control/SvgDanDaoView.kt
  20. 2 0
      room/src/main/java/com/swago/room/hongbao/RedEnvelopResultDialog.kt
  21. 4 4
      room/src/main/java/com/swago/room/piaotiao/WaftView.kt
  22. 2 1
      room/src/main/res/layout/activity_anchor_room.xml
  23. 1 1
      room/src/main/res/layout/activity_rank_list.xml
  24. 1 1
      room/src/main/res/layout/dialog_gift.xml
  25. 1 0
      room/src/main/res/layout/layout_pk_view.xml
  26. 1 0
      room/src/main/res/layout/layout_svg_dan_dao_view.xml
  27. 2 1
      room/src/main/res/layout/layout_user_room.xml
  28. BIN
      room/src/main/res/mipmap-xxhdpi/bg_room.webp
  29. 1 1
      tuikit/src/main/res/layout/chat_inputmore_layout.xml
  30. 1 1
      tuikit/src/main/res/layout/fragment_face.xml
  31. 1 0
      user/src/main/java/com/swago/user/level/RichLevelFragment.kt
  32. 1 1
      user/src/main/res/layout/activity_level.xml
  33. 1 1
      user/src/main/res/layout/activity_tab_black.xml
  34. 1 1
      user/src/main/res/layout/activity_task.xml

+ 2 - 0
app/src/main/java/com/swago/app/SplashActivity.kt

@@ -37,6 +37,8 @@ class SplashActivity : AppCompatActivity() {
                         "These permissions are denied: $deniedList",
                         Toast.LENGTH_LONG
                     ).show()
+                    ARouter.getInstance().build(ARouteConstant.Login.login).navigation()
+                    finish()
                 }
             }
     }

+ 2 - 0
baseswago/build.gradle

@@ -131,4 +131,6 @@ dependencies {
     api 'com.google.firebase:firebase-perf-ktx'
     //jsoup
     api 'org.jsoup:jsoup:1.12.1'
+    //适配阿拉伯语
+    api 'com.duolingo.open:rtl-viewpager:2.0.0'
 }

+ 1 - 1
baseswago/src/main/java/com/swago/baseswago/baseroom/widget/XPagerSnapHelper.java

@@ -80,7 +80,7 @@ public class XPagerSnapHelper extends PagerSnapHelper {
         if (adapter == null) {
             return false;
         }
-        return (Math.abs(velocityY) > 3500 || Math.abs(velocityX) > 3500)
+        return (Math.abs(velocityY) > 300 || Math.abs(velocityX) > 300)
                 && snapFromFling(layoutManager, velocityX, velocityY);
     }
 

+ 1 - 0
baseswago/src/main/java/com/swago/baseswago/model/im/RoomChatMsgBean.java

@@ -14,6 +14,7 @@ public class RoomChatMsgBean implements IRoomChat {
     public String senderId="";
     public String sendName="";
     public String content="";
+    public String roomId="";
     public int senderLevel;
     public int isBenefit;
     public int isPrettyAccount;

+ 35 - 1
baseswago/src/main/java/com/swago/baseswago/model/live/gift/GiftModel.java

@@ -23,6 +23,8 @@ public class GiftModel implements Parcelable {
     private String gift_icon_url;
     private String gift_svg_url;
     private int gift_mode;
+    private String gift_en_name;
+    private String gift_id_name;
     private boolean isSelected;
 
     protected GiftModel(Parcel in) {
@@ -32,6 +34,8 @@ public class GiftModel implements Parcelable {
         gift_icon_url = in.readString();
         gift_svg_url = in.readString();
         gift_mode = in.readInt();
+        gift_en_name = in.readString();
+        gift_id_name = in.readString();
     }
 
     public static final Creator<GiftModel> CREATOR = new Creator<GiftModel>() {
@@ -55,7 +59,11 @@ public class GiftModel implements Parcelable {
     }
 
     public String getGift_name() {
-        return gift_name;
+        if (gift_name==null){
+            return "";
+        }else {
+            return gift_name;
+        }
     }
 
     public void setGift_name(String gift_name) {
@@ -94,6 +102,30 @@ public class GiftModel implements Parcelable {
         this.gift_mode = gift_mode;
     }
 
+    public String getGift_en_name() {
+        if (gift_en_name==null){
+            return "";
+        }else {
+            return gift_en_name;
+        }
+    }
+
+    public void setGift_en_name(String gift_en_name) {
+        this.gift_en_name = gift_en_name;
+    }
+
+    public String getGift_id_name() {
+        if (gift_id_name==null){
+            return "";
+        }else {
+            return gift_id_name;
+        }
+    }
+
+    public void setGift_id_name(String gift_id_name) {
+        this.gift_id_name = gift_id_name;
+    }
+
     public boolean isSelected() {
         return isSelected;
     }
@@ -115,5 +147,7 @@ public class GiftModel implements Parcelable {
         dest.writeString(gift_icon_url);
         dest.writeString(gift_svg_url);
         dest.writeInt(gift_mode);
+        dest.writeString(gift_en_name);
+        dest.writeString(gift_id_name);
     }
 }

+ 3 - 0
baseswago/src/main/java/com/swago/baseswago/util/SwagoInfo.kt

@@ -35,6 +35,9 @@ object SwagoInfo {
             "ms" -> {
                 "ms"
             }
+            "ar" -> {
+                "ar"
+            }
             else -> {
                 "en"
             }

+ 20 - 0
baseswago/src/main/java/com/swago/glide.kt

@@ -1,10 +1,15 @@
 package com.swago
 
 import android.content.Context
+import android.os.Build
+import android.text.BidiFormatter
+import android.text.TextDirectionHeuristics
 import android.widget.ImageView
 import androidx.annotation.DrawableRes
+import androidx.annotation.RequiresApi
 import com.bumptech.glide.Glide
 import com.swago.baseswago.R
+import java.util.*
 
 /**
  *@date 2022/3/29 09:49
@@ -26,4 +31,19 @@ fun ImageView.loadUrl(context: Context,url:String){
         .placeholder(R.mipmap.default_avatar)
         .error(R.mipmap.default_avatar)
         .into(this)
+}
+
+
+fun String.formatAr(): String {
+    return BidiFormatter.getInstance(Locale.getDefault())
+        .unicodeWrap(this, TextDirectionHeuristics.LOCALE)
+}
+
+
+@RequiresApi(Build.VERSION_CODES.O)
+fun CharSequence.formatAr(): CharSequence {
+    return BidiFormatter.getInstance(Locale.getDefault()).unicodeWrap(
+        this,
+        TextDirectionHeuristics.LOCALE
+    )
 }

BIN
baseswago/src/main/res/mipmap-ar-xxhdpi/back.png


BIN
baseswago/src/main/res/mipmap-ar-xxhdpi/more_small.png


+ 186 - 0
baseswago/src/main/res/values-ar/strings.xml

@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="user_agreement">اتفاقية المستخدم</string>
+    <string name="privacy_policy">سياسة الخصوصية</string>
+    <string name="and">و</string>
+    <string name="explain">تسجيل الدخول يعني أنك وافقت على اتفاقية المستخدم المذكورة أعلاه وسياسة الخصوصية</string>
+    <string name="follow">متابعة</string>
+    <string name="fans">تابع</string>
+    <string name="following">قائمة المتابعة</string>
+    <string name="followers">قائمة التابعين</string>
+    <string name="current_version">الإصدار</string>
+    <string name="logout">تسجيل خروج</string>
+    <string name="blacklist">القائمة المحظورة</string>
+    <string name="setting">الإعدادات</string>
+    <string name="edit_profile">تعديل الملف الشخصي</string>
+    <string name="male">رجل</string>
+    <string name="female">امرأة</string>
+    <string name="save">حفظ</string>
+    <string name="start_live">بدأ البث</string>
+    <string name="room_has_been_closed">انتهى البث</string>
+    <string name="leave">مغادرة</string>
+    <string name="join_room">دخل غرفة البث</string>
+    <string name="id_x">ID:%s</string>
+    <string name="swago_offical_msg">المعلومات الرسمية Swago</string>
+    <string name="message">رسالة</string>
+    <string name="coin">كوينز</string>
+    <string name="diamond">ماس</string>
+    <string name="my_level">درجتي</string>
+    <string name="top_up_center">مركز الشحن</string>
+    <string name="task_center">مركز المهام</string>
+    <string name="contact_service">خدمة العملاء</string>
+    <string name="sex">جنس</string>
+    <string name="age">سن</string>
+    <string name="constellation">كوكبة</string>
+    <string name="sign">السيرة الذاتية</string>
+    <string name="selecte_country">حدد الدولة / المنطقة</string>
+    <string name="country">الدولة / المنطق</string>
+    <string name="rich_level">مستوى غني</string>
+    <string name="anchor_level">مستوى المضيف</string>
+    <string name="get_exp">احصل على نقاط الخبرة</string>
+    <string name="level_up_exp">الخبرة المطلوبة للترقية:%s</string>
+    <string name="know_detail">معلومات أكثر</string>
+    <string name="level_medal">شارة</string>
+    <string name="show_first">عرض الأولوية</string>
+    <string name="vip_server">خدمة عملاء حصرية</string>
+    <string name="level_privilege">امتياز المستوى</string>
+    <string name="levek_compare_table">جدول مقارنة المستوى</string>
+    <string name="home_hot">حار</string>
+    <string name="home_new">نجمة جديدة</string>
+    <string name="home_follow">متابعة</string>
+    <string name="mine_balance">رصيدي</string>
+    <string name="recharge_gear">قائمة الشحن</string>
+    <string name="recharge">شحن</string>
+    <string name="daily_task">مهام يومية</string>
+    <string name="newer_task">مهمة مبتدئ</string>
+    <string name="reward">مكافأة:</string>
+    <string name="exp">خبرة</string>
+    <string name="receive">تسليم</string>
+    <string name="uncomplete">غير مكمل</string>
+    <string name="complete">مكمل</string>
+    <string name="live_end">قد انتهى البث</string>
+    <string name="sure_close">تأكيد</string>
+    <string name="search_name_or_id">البحث عن الاسم/ الايدي</string>
+    <string name="fans_list">ترتيب الداعمين</string>
+    <string name="daily">يومي</string>
+    <string name="weekly">اسبوعي</string>
+    <string name="monthly">شهري</string>
+    <string name="need_exp">نقاط الخبرة المطلوبة</string>
+    <string name="exp_explain">ارسال هدايا بقيمة 100 كوينز، نقاط خبرة +1</string>
+    <string name="exp_explain2">الحصول على هدايا بقيمة 100 كوينز، نقاط خبرة +1</string>
+    <string name="report">إبلاغ</string>
+    <string name="report_success">إبلاغ بالنجاح</string>
+    <string name="report_one">محتوى فظ أو إباحي</string>
+    <string name="report_two">غير قانوني أو عنيف</string>
+    <string name="report_three">تعريض السلامة الشخصية للخطر</string>
+    <string name="report_four">الصورة الرمزية غير شرعية</string>
+    <string name="report_five">غطاء غير قانوني</string>
+    <string name="report_six">أخرى</string>
+    <string name="tips">تنبيه</string>
+    <string name="consume_order">الطلب \n%s\n لم يتم استهلاكه بنجاح، الرجاء النقر فوق إعادة إرسال الطلب!</string>
+    <string name="sure_consume">إعادة تقديم الطلب الآن</string>
+    <string name="send">ارسال</string>
+    <string name="hot">حار</string>
+    <string name="luxury">هدايا مميزة</string>
+    <string name="pay_cancel">إلغاء الدفع</string>
+    <string name="pay_fail">استثناء دفع جوجل</string>
+    <string name="send_to">ارسال إلى%s</string>
+    <string name="install_facebook">الرجاء تثبيت Facebook أولاً</string>
+    <string name="acccount_login">تسجل الدخول</string>
+    <string name="other_login">Google &amp; Facebook login</string>
+    <string name="input_account">الرجاء إدخال حسابك</string>
+    <string name="input_secret">الرجاء إدخال الكلمة السرية</string>
+    <string name="login">تسجيل الدخول</string>
+    <string name="facebook_google_login">طرق تسجيل الدخول الأخرى</string>
+    <string name="google_service_error">هناك مشكلة في خدمة Google الخاصة بك</string>
+    <string name="big_gift_msg">ارسل %s إلى %s واحد إلى %s، وهو أمر فخور للغاية!</string>
+    <string name="big_gift">ارسل %s إلى %s واحد إلى %s</string>
+    <string name="balance">الرصيد:</string>
+    <string name="login_anthor_device">تم تسجيل الدخول إلى حسابك بالفعل على جهاز آخر </string>
+    <string name="lucky">سعيد الحظ</string>
+    <string name="live">بدأ البث</string>
+    <string name="win_num_prize">Win %s times coins</string>
+    <string name="kick_success">طرد بنجاح</string>
+    <string name="kick_room">طرد من غرفة البث</string>
+    <string name="be_kick_out">لقد تم طردك من البث</string>
+    <string name="mute_success">كتم الصوت بنجاح</string>
+    <string name="cancel_mute_success">تمت إعادة الصوت بنجاح</string>
+    <string name="forbid_speak">صامت</string>
+    <string name="cancel_forbid_speak">إلغاء صامت</string>
+    <string name="you_are_been_forbid">لقد تم اسكاتك</string>
+    <string name="black">حظر</string>
+    <string name="black_success">تم حظره بنجاح</string>
+    <string name="cancel_black_success">إلغاء نجاح الحظر</string>
+    <string name="room_anchor_black_list">القائمة السوداء للمضيف</string>
+    <string name="room_user_black_list">القائمة السوداء للمستخدم</string>
+    <string name="delete">حذف</string>
+    <string name="rank_title">عنوان</string>
+    <string name="special_effects">آثار الدخول</string>
+    <string name="send_gift">أرسل هدية</string>
+    <string name="add_privat_chat_black">اضاف إلى القائمة السوداء للرسائل الخاصة</string>
+    <string name="cancel_private_chat_black">إلغاء حظر الرسائل الخاصة</string>
+    <string name="add_room_chat_black">اضاف إلى القائمة السوداء لغرفة البث</string>
+    <string name="cancel_room_chat_black">إلغاء القائمة السوداء لغرفة البث</string>
+    <string name="never_watcher_the_anchor">توقف عن مشاهدة هذا البث</string>
+    <string name="private_message_black">القائمة السوداء للرسائل الخاصة</string>
+    <string name="live_room_black">القائمة السوداء لغرفة البث</string>
+    <string name="anchor_black">مضيف القائمة السوداء</string>
+    <string name="edit">تعديل</string>
+    <string name="level">مستوى</string>
+    <string name="withdrawal">سحب</string>
+    <string name="top_up">شحن</string>
+    <string name="app_settings">الإعدادات</string>
+    <string name="nickname">اسم الشهرة</string>
+    <string name="confirm">تأكيد</string>
+    <string name="say_hi">قال مرحبا</string>
+    <string name="total">إجمالية</string>
+
+    <string name="followed">متابعة</string>
+    <string name="audience_list">قائمة المشاهدين</string>
+    <string name="share_to">شارك في</string>
+    <string name="app_not_install">التطبيق غير مثبت</string>
+    <string name="follow_anchor">تم تبع المضيف، لا تقلق بشأن فقد البث المباشر مرة أخرى~</string>
+    <string name="big_prize">كم هو محظوظ! %s أرسل %s للفوز بالمكافأة %s ضعفًا، تهانينا!</string>
+    <string name="update_now">التحديث على الفور</string>
+
+    <string name="special">الخاص</string>
+    <string name="not_less_coin">لا يقل عن %s كوينز</string>
+    <string name="at_last_red_num">%s صندوق حمراء على الأقل</string>
+    <string name="broadcast_red_envelope">عندما يكون المبلغ الإجمالي للمغلفات الحمراء>=%s، سيتم بث إشعار عبر كل التطبيق.</string>
+    <string name="receive_red_envelope_coin">تسليم الصندوق الأحمر</string>
+    <string name="go_to_send">لتقديم الهدايا</string>
+    <string name="congratulation">تهانينا! تسليم الصندوق الأحمر!</string>
+    <string name="sorry_fail_to_get">من المؤسف أنك تأخرت، \n تم تسليم الصنادق الحمراء</string>
+    <string name="from_who_red_envelope">صندوق احمر من %s</string>
+    <string name="konw">فهمت</string>
+    <string name="red_envelope_rule">قواعد الصنادق الحمراء المحظوظة</string>
+    <string name="red_envelope">صنادق حمراء محظوظة</string>
+    <string name="coin_sum">كمية الكوينزات</string>
+    <string name="red_envelope_num">عدد الصنادق الحمراء</string>
+    <string name="send_red_envelope">ارسال صنادق حمراء</string>
+    <string name="go_to">الذهاب إلى</string>
+    <string name="who_send_red_envelope_broadcast">لقد أرسلت صندوق أحمر في غرفة %s، هل تريد الذهاب إلى غرفة البث هذه لأخذ الصندوق الأحمر؟</string>
+    <string name="already_receive_red_envelope">لقد تلقيت بالفعل الصندوق الأحمر</string>
+    <string name="cancel">يلغي</string>
+    <string name="not_enough_coin">رصيد عملة غير كاف</string>
+
+    <string name="please_update">يرجى تحديث التطبيق أولا</string>
+    <string name="upgrade_level">كيفية الترقية</string>
+    <string name="got_it_ss">فهم(%ss)</string>
+    <string name="ban_title">لقد تم حظرك من البث</string>
+    <string name="remaining_time_of_ban">الوقت المتبقي حظر من البث</string>
+    <string name="got_it">يفهم</string>
+    <string name="force_closed_by_admin">تم إغلاق غرفة البث الخاصة بك من قبل المسؤول</string>
+    <string name="game_prize">%s ربح للتو%s عملات معدنية في %s، هذا رائع!</string>
+    <string name="select_pk_anchor">اختر مضيف PK</string>
+    <string name="please_enter_the_host_id_name">الرجاء إدخال ايدي المضيف</string>
+    <string name="invite_pk">دعوة PK</string>
+    <string name="initiate_invitation">بدء PK</string>
+    <string name="inviting_time">في الدعوة …(%ss)</string>
+    <string name="invites_you_to_pk">يدعوك %s إلى PK</string>
+    <string name="accept_swago">قبول</string>
+    <string name="refuse_swago">رفض</string>
+    <string name="peer_liver_refuse_pk">الطرف الآخر رفض PK الخاص بك</string>
+    <string name="send_pk_liver_cancel">البادئ يلغي PK</string>
+
+</resources>

+ 19 - 5
home/src/main/java/com/swago/home/innerhome/HomeGridItemDecoration.kt

@@ -4,6 +4,7 @@ import android.graphics.Rect
 import android.view.View
 import androidx.recyclerview.widget.RecyclerView
 import com.swago.baseswago.util.DpPxUtil
+import com.swago.baseswago.util.SwagoInfo
 
 /**
  *@date 2021/11/28 11:06
@@ -24,13 +25,26 @@ class HomeGridItemDecoration : RecyclerView.ItemDecoration() {
             outRect.set(0, 0, 0, 0)
             return
         }
-        when(column){
-            0 -> {
-                outRect.set(middle, margin, margin, 0)
+
+        if (SwagoInfo.getLanguageCode()=="ar"){
+            when(column){
+                0 -> {
+                    outRect.set(margin, margin, middle, 0)
+                }
+
+                1 -> {
+                    outRect.set(middle, margin, margin, 0)
+                }
             }
+        }else{
+            when(column){
+                0 -> {
+                    outRect.set(middle, margin, margin, 0)
+                }
 
-            1 -> {
-                outRect.set(margin, margin, middle, 0)
+                1 -> {
+                    outRect.set(margin, margin, middle, 0)
+                }
             }
         }
     }

+ 1 - 1
home/src/main/res/layout/activity_home.xml

@@ -4,7 +4,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <androidx.viewpager.widget.ViewPager
+    <com.duolingo.open.rtlviewpager.RtlViewPager
         android:id="@+id/viewPager"
         android:layout_width="match_parent"
         android:layout_height="0dp"

+ 1 - 1
home/src/main/res/layout/fragment_home.xml

@@ -51,7 +51,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"/>
 
-    <androidx.viewpager.widget.ViewPager
+    <com.duolingo.open.rtlviewpager.RtlViewPager
         android:id="@+id/viewPager"
         app:layout_constraintTop_toBottomOf="@+id/magicIndicator"
         app:layout_constraintBottom_toBottomOf="parent"

+ 6 - 0
login/src/main/java/com/swago/login/LoginActivity.kt

@@ -60,6 +60,7 @@ class LoginActivity : BaseXActivity<ActivityLoginBinding>() {
                             if (allGranted) {
                                 FBLogin.login(this@LoginActivity)
                             } else {
+                                FBLogin.login(this@LoginActivity)
                                 Toast.makeText(
                                     this@LoginActivity,
                                     "These permissions are denied: $deniedList",
@@ -84,6 +85,7 @@ class LoginActivity : BaseXActivity<ActivityLoginBinding>() {
                             if (allGranted) {
                                 GoogleLogin.login(this@LoginActivity)
                             } else {
+                                GoogleLogin.login(this@LoginActivity)
                                 Toast.makeText(
                                     this@LoginActivity,
                                     "These permissions are denied: $deniedList",
@@ -148,6 +150,10 @@ class LoginActivity : BaseXActivity<ActivityLoginBinding>() {
                             val secret = binding.etSecret.text.toString()
                             loginVm.loginByAccount(account, secret)
                         } else {
+                            SwagoLoading.showLoadingDialog(this@LoginActivity)
+                            val account = binding.etAccount.text.toString()
+                            val secret = binding.etSecret.text.toString()
+                            loginVm.loginByAccount(account, secret)
                             Toast.makeText(
                                 this@LoginActivity,
                                 "These permissions are denied: $deniedList",

+ 1 - 0
login/src/main/res/layout/activity_login.xml

@@ -206,6 +206,7 @@
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         android:layout_marginBottom="20dp"
+        android:gravity="center"
         android:text="@string/explain"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"/>

+ 10 - 6
room/src/main/java/com/swago/room/adapter/RoomChatAdapter.kt

@@ -2,10 +2,8 @@ package com.swago.room.adapter
 
 import android.graphics.Bitmap
 import android.graphics.Color
-import android.text.Html
-import android.text.SpannableString
-import android.text.Spanned
-import android.text.TextPaint
+import android.os.Build
+import android.text.*
 import android.text.method.LinkMovementMethod
 import android.text.style.ClickableSpan
 import android.text.style.ImageSpan
@@ -19,11 +17,13 @@ import com.swago.baseswago.cusview.LiangView
 import com.swago.baseswago.cusview.SwagoLevelView
 import com.swago.baseswago.im.IRoomChat
 import com.swago.baseswago.im.RoomMsgType
+import com.swago.formatAr
 import com.swago.room.R
 import com.swago.room.adapter.bitmap.CenterAlignImageSpan
 import com.swago.room.adapter.bitmap.CustomImageSpan
 import com.swago.room.adapter.bitmap.HtmlImageGetter
-import java.util.HashMap
+import java.util.*
+import kotlin.collections.ArrayList
 
 /**
  *@date 2021/10/23 19:17
@@ -281,7 +281,11 @@ class RoomChatAdapter :
             }
             tvContent.movementMethod = LinkMovementMethod.getInstance()
             tvContent.highlightColor = Color.TRANSPARENT
-            tvContent.text = span
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+                tvContent.text = span?.formatAr()?:""
+            }else{
+                tvContent.text = span
+            }
         }
     }
 

+ 2 - 0
room/src/main/java/com/swago/room/dialog/SendMsgDialog.kt

@@ -98,12 +98,14 @@ class SendMsgDialog : BaseXDFragment<DialogSendMsgBinding>() {
                         roomChatMsgBean.senderLevel = it.user_wealth_level.toInt()
                         roomChatMsgBean.isBenefit = it.is_benefit
                         roomChatMsgBean.isPrettyAccount = it.is_pretty_account
+                        roomChatMsgBean.roomId = SwagoRoomManager.iRoomInfo?.getRoomId()?:""
                         addSenderMsgToRoomChatList?.invoke(roomChatMsgBean)
 
                         val jsonObject = JSONObject()
                         jsonObject.put("senderId", it.id)
                         jsonObject.put("sendName", it.user_name)
                         jsonObject.put("senderLevel", it.user_wealth_level)
+                        jsonObject.put("roomId", SwagoRoomManager.iRoomInfo?.getRoomId()?:"")
                         jsonObject.put("isBenefit", it.is_benefit)
                         jsonObject.put("content", content)
                         jsonObject.put("isPrettyAccount", it.is_pretty_account)

+ 14 - 1
room/src/main/java/com/swago/room/gift/GiftAdapter.kt

@@ -5,6 +5,7 @@ import com.bumptech.glide.Glide
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.chad.library.adapter.base.BaseViewHolder
 import com.swago.baseswago.model.live.gift.GiftModel
+import com.swago.baseswago.util.SwagoInfo
 import com.swago.room.R
 
 /**
@@ -22,7 +23,19 @@ class GiftAdapter(private val type: Int, layoutResId: Int, data: ArrayList<GiftM
             }else{
                 setVisible(R.id.tvCoin,false)
             }
-            setText(R.id.tvName, item.gift_name)
+            when(SwagoInfo.getLanguageCode()){
+                "id" -> {
+                    setText(R.id.tvName, item.gift_id_name)
+                }
+                "zh" -> {
+                    setText(R.id.tvName, item.gift_name)
+                }
+                else -> {
+                    setText(R.id.tvName, item.gift_en_name)
+                }
+
+            }
+
             val ivGift = itemView.findViewById<ImageView>(R.id.ivGift)
             Glide.with(itemView.context).load(item.gift_icon_url)
                 .placeholder(R.mipmap.default_avatar)

+ 1 - 4
room/src/main/java/com/swago/room/gift/control/SvgDanDaoView.kt

@@ -61,10 +61,7 @@ class SvgDanDaoView : ConstraintLayout {
             val sendName = "<font color='#FFDB43'>${next.senderName}</font>"
             val giftName = "<font color='#FFDB43'>${next.giftName}</font>"
             val receiverName = "<font color='#FFDB43'>${next.receiverName}</font>"
-            marqueeTextView.text = Html.fromHtml(
-                AppContext.getContext().resources.getString(R.string.big_gift)
-                    .format(sendName, giftName, receiverName)
-            )
+            marqueeTextView.text = Html.fromHtml("\u200E${AppContext.getContext().resources.getString(R.string.big_gift) .format(sendName, giftName, receiverName)}")
             marqueeTextView.post {
                 marqueeTextView.startScroll()
             }

+ 2 - 0
room/src/main/java/com/swago/room/hongbao/RedEnvelopResultDialog.kt

@@ -90,6 +90,7 @@ class RedEnvelopResultDialog : BaseXDFragment<DialogRedEnvelopeResultBinding>()
                 roomChatMsgBean.senderId = it.id
                 roomChatMsgBean.senderLevel = it.user_wealth_level.toInt()
                 roomChatMsgBean.isBenefit = it.is_benefit
+                roomChatMsgBean.roomId = SwagoRoomManager.iRoomInfo?.getRoomId()?:""
                 roomChatMsgBean.isPrettyAccount = it.is_pretty_account
                 addSenderMsgToRoomChatList?.invoke(roomChatMsgBean)
 
@@ -99,6 +100,7 @@ class RedEnvelopResultDialog : BaseXDFragment<DialogRedEnvelopeResultBinding>()
                 jsonObject.put("senderLevel", it.user_wealth_level)
                 jsonObject.put("isBenefit", it.is_benefit)
                 jsonObject.put("content", content)
+                jsonObject.put("roomId", SwagoRoomManager.iRoomInfo?.getRoomId()?:"")
                 jsonObject.put("isPrettyAccount", it.is_pretty_account)
 
                 val jsonObjectType = JSONObject()

+ 4 - 4
room/src/main/java/com/swago/room/piaotiao/WaftView.kt

@@ -101,13 +101,13 @@ class WaftView : FrameLayout {
                     val giftName = "<font color='#FFDB43'>${next.giftName}</font>"
                     val multiple = "<font color='#FFDB43'>${next.multiple}</font>"
                     binding?.ll?.setBackgroundResource(R.mipmap.waft_big_prize)
-                    binding?.marqueeTextView?.text = Html.fromHtml(AppContext.getContext().resources.getString(R.string.big_prize).format(sendName,giftName,multiple))
+                    binding?.marqueeTextView?.text = Html.fromHtml("\u200E${AppContext.getContext().resources.getString(R.string.big_prize).format(sendName,giftName,multiple)}")
                 }else{
                     val sendName = "<font color='#FFDB43'>${next.senderName}</font>"
                     val giftName = "<font color='#FFDB43'>${next.giftName}</font>"
                     val receiverName = "<font color='#FFDB43'>${next.receiverName}</font>"
                     binding?.ll?.setBackgroundResource(R.mipmap.waft_bg)
-                    binding?.marqueeTextView?.text = Html.fromHtml(AppContext.getContext().resources.getString(R.string.big_gift_msg).format(sendName,giftName,receiverName))
+                    binding?.marqueeTextView?.text = Html.fromHtml("\u200E${AppContext.getContext().resources.getString(R.string.big_gift_msg).format(sendName,giftName,receiverName)}")
                 }
             }
 
@@ -118,10 +118,10 @@ class WaftView : FrameLayout {
                 binding?.ll?.setBackgroundResource(R.mipmap.waft_game_bg)
                 when(SwagoInfo.getLanguageCode()){
                     "id","ms" -> {
-                        binding?.marqueeTextView?.text = Html.fromHtml(AppContext.getContext().resources.getString(R.string.game_prize).format(sendName,coin,gameName))
+                        binding?.marqueeTextView?.text = Html.fromHtml("\u200E${AppContext.getContext().resources.getString(R.string.game_prize).format(sendName,coin,gameName)}")
                     }
                     else -> {
-                        binding?.marqueeTextView?.text = Html.fromHtml(AppContext.getContext().resources.getString(R.string.game_prize).format(sendName,gameName,coin))
+                        binding?.marqueeTextView?.text = Html.fromHtml("\u200E${AppContext.getContext().resources.getString(R.string.game_prize).format(sendName,gameName,coin)}")
                     }
                 }
             }

+ 2 - 1
room/src/main/res/layout/activity_anchor_room.xml

@@ -9,6 +9,7 @@
     <!--自己-->
     <FrameLayout
         android:id="@+id/flLocal"
+        android:layoutDirection="ltr"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
@@ -29,7 +30,7 @@
 
     </FrameLayout>
 
-    <androidx.viewpager.widget.ViewPager
+    <com.duolingo.open.rtlviewpager.RtlViewPager
         android:id="@+id/viewPager"
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>

+ 1 - 1
room/src/main/res/layout/activity_rank_list.xml

@@ -65,7 +65,7 @@
             android:layout_height="56dp"/>
 
 
-        <androidx.viewpager.widget.ViewPager
+        <com.duolingo.open.rtlviewpager.RtlViewPager
             android:id="@+id/viewPager"
             android:layout_width="match_parent"
             android:layout_height="match_parent"/>

+ 1 - 1
room/src/main/res/layout/dialog_gift.xml

@@ -40,7 +40,7 @@
             android:layout_width="wrap_content"
             android:layout_height="0dp"/>
 
-        <androidx.viewpager.widget.ViewPager
+        <com.duolingo.open.rtlviewpager.RtlViewPager
             android:id="@+id/viewPager"
             app:layout_constraintTop_toBottomOf="@+id/magicIndicator"
             android:layout_width="match_parent"

+ 1 - 0
room/src/main/res/layout/layout_pk_view.xml

@@ -2,6 +2,7 @@
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:layoutDirection="ltr"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools">
 

+ 1 - 0
room/src/main/res/layout/layout_svg_dan_dao_view.xml

@@ -5,6 +5,7 @@
     android:id="@+id/cl"
     tools:visibility="visible"
     android:visibility="invisible"
+    android:layoutDirection="ltr"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools">
 

+ 2 - 1
room/src/main/res/layout/layout_user_room.xml

@@ -9,6 +9,7 @@
 
     <FrameLayout
         android:id="@+id/flRoot"
+        android:layoutDirection="ltr"
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>
 
@@ -19,7 +20,7 @@
         android:layout_height="match_parent">
     </FrameLayout>
 
-    <androidx.viewpager.widget.ViewPager
+    <com.duolingo.open.rtlviewpager.RtlViewPager
         android:id="@+id/viewPager"
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>

BIN
room/src/main/res/mipmap-xxhdpi/bg_room.webp


+ 1 - 1
tuikit/src/main/res/layout/chat_inputmore_layout.xml

@@ -9,7 +9,7 @@
         android:layout_height="1px"
         android:background="@color/input_title_line_color" />
 
-    <androidx.viewpager.widget.ViewPager
+    <com.duolingo.open.rtlviewpager.RtlViewPager
         android:layout_marginTop="16dp"
         android:layout_marginBottom="33dp"
         android:layout_marginLeft="29dp"

+ 1 - 1
tuikit/src/main/res/layout/fragment_face.xml

@@ -4,7 +4,7 @@
     android:layout_height="wrap_content"
     android:orientation="vertical">
 
-    <androidx.viewpager.widget.ViewPager
+    <com.duolingo.open.rtlviewpager.RtlViewPager
         android:id="@+id/face_viewPager"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"

+ 1 - 0
user/src/main/java/com/swago/user/level/RichLevelFragment.kt

@@ -7,6 +7,7 @@ import com.swago.baseswago.fragment.BaseXFragment
 import com.swago.baseswago.util.AppContext
 import com.swago.baseswago.util.NoDoubleClickListener
 import com.swago.baseswago.util.UserInfo
+import com.swago.formatAr
 import com.swago.user.R
 import com.swago.user.databinding.FragmentRichLevelBinding
 

+ 1 - 1
user/src/main/res/layout/activity_level.xml

@@ -31,7 +31,7 @@
         app:layout_constraintEnd_toEndOf="parent"
         android:layout_height="56dp"/>
 
-    <androidx.viewpager.widget.ViewPager
+    <com.duolingo.open.rtlviewpager.RtlViewPager
         android:id="@+id/viewPager"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/magicIndicator"

+ 1 - 1
user/src/main/res/layout/activity_tab_black.xml

@@ -26,7 +26,7 @@
             android:layout_width="match_parent"
             android:layout_height="56dp"/>
 
-        <androidx.viewpager.widget.ViewPager
+        <com.duolingo.open.rtlviewpager.RtlViewPager
             android:id="@+id/viewPager"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/magicIndicator"

+ 1 - 1
user/src/main/res/layout/activity_task.xml

@@ -19,7 +19,7 @@
         android:layout_width="match_parent"
         android:layout_height="56dp"/>
 
-    <androidx.viewpager.widget.ViewPager
+    <com.duolingo.open.rtlviewpager.RtlViewPager
         android:id="@+id/viewPager"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/magicIndicator"