Add v8.7.6 support and improve patchport

This commit is contained in:
ave 2019-04-25 13:12:30 +03:00
parent fec4f2ae24
commit 042fe52427
No known key found for this signature in database
GPG key ID: 09356ABAA42C842B
37 changed files with 6530 additions and 11 deletions

View file

@ -2,7 +2,7 @@
Discord Android app patches. Discord Android app patches.
**Latest supported Discord Android version:** 8.5.6 (856), released on 2019-03-08. **Latest supported Discord Android version:** 8.7.6 (876), released on 2019-04-18.
New patch development will be done for the latest supported version. New patch development will be done for the latest supported version.

124
patches/branding/876.patch Normal file
View file

@ -0,0 +1,124 @@
diff -crB from/AndroidManifest.xml to/AndroidManifest.xml
*** from/AndroidManifest.xml 2019-04-25 11:23:36.734134485 +0300
--- to/AndroidManifest.xml 2019-04-25 11:23:39.967485513 +0300
***************
*** 1,4 ****
! <?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="28" android:compileSdkVersionCodename="9" android:installLocation="auto" package="com.discord" platformBuildVersionCode="876" platformBuildVersionName="8.7.6">
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.faketouch" android:required="false"/>
--- 1,4 ----
! <?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="28" android:compileSdkVersionCodename="9" android:installLocation="auto" package="com.cutthecord.CTCBRANCH" platformBuildVersionCode="876CTCBUILD" platformBuildVersionName="8.7.6-cutthecord-CTCBUILD">
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.faketouch" android:required="false"/>
***************
*** 96,102 ****
</receiver>
<service android:enabled="true" android:exported="false" android:name="com.google.android.gms.analytics.CampaignTrackingService"/>
<service android:name="com.discord.utilities.voice.VoiceEngineForegroundService"/>
! <provider android:authorities="com.discord.file-provider" android:exported="false" android:grantUriPermissions="true" android:name="androidx.core.content.FileProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/>
</provider>
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false"/>
--- 96,102 ----
</receiver>
<service android:enabled="true" android:exported="false" android:name="com.google.android.gms.analytics.CampaignTrackingService"/>
<service android:name="com.discord.utilities.voice.VoiceEngineForegroundService"/>
! <provider android:authorities="top.distok.cutthecord.CTCBRANCH.file-provider" android:exported="false" android:grantUriPermissions="true" android:name="androidx.core.content.FileProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/>
</provider>
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false"/>
***************
*** 141,149 ****
</intent-filter>
</service>
<activity android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
! <provider android:authorities="com.discord.firebaseinitprovider" android:exported="false" android:initOrder="100" android:name="com.google.firebase.provider.FirebaseInitProvider"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
! <provider android:authorities="com.discord.workmanager-init" android:directBootAware="false" android:exported="false" android:multiprocess="true" android:name="androidx.work.impl.WorkManagerInitializer"/>
<service android:directBootAware="false" android:enabled="@bool/enable_system_alarm_service_default" android:exported="false" android:name="androidx.work.impl.background.systemalarm.SystemAlarmService"/>
<service android:directBootAware="false" android:enabled="@bool/enable_system_job_service_default" android:exported="true" android:name="androidx.work.impl.background.systemjob.SystemJobService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<receiver android:directBootAware="false" android:enabled="true" android:exported="false" android:name="androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver"/>
--- 141,149 ----
</intent-filter>
</service>
<activity android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
! <provider android:authorities="top.distok.cutthecord.CTCBRANCH.firebaseinitprovider" android:exported="false" android:initOrder="100" android:name="com.google.firebase.provider.FirebaseInitProvider"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
! <provider android:authorities="top.distok.cutthecord.CTCBRANCH.workmanager-init" android:directBootAware="false" android:exported="false" android:multiprocess="true" android:name="androidx.work.impl.WorkManagerInitializer"/>
<service android:directBootAware="false" android:enabled="@bool/enable_system_alarm_service_default" android:exported="false" android:name="androidx.work.impl.background.systemalarm.SystemAlarmService"/>
<service android:directBootAware="false" android:enabled="@bool/enable_system_job_service_default" android:exported="true" android:name="androidx.work.impl.background.systemjob.SystemJobService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<receiver android:directBootAware="false" android:enabled="true" android:exported="false" android:name="androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver"/>
***************
*** 182,189 ****
<action android:name="androidx.work.impl.background.systemalarm.UpdateProxies"/>
</intent-filter>
</receiver>
! <provider android:authorities="com.discord.lifecycle-process" android:exported="false" android:multiprocess="true" android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer"/>
! <provider android:authorities="com.discord.crashlyticsinitprovider" android:exported="false" android:initOrder="90" android:name="com.crashlytics.android.CrashlyticsInitProvider"/>
<meta-data android:name="com.android.vending.derived.apk.id" android:value="1"/>
</application>
</manifest>
--- 182,189 ----
<action android:name="androidx.work.impl.background.systemalarm.UpdateProxies"/>
</intent-filter>
</receiver>
! <provider android:authorities="top.distok.cutthecord.CTCBRANCH.lifecycle-process" android:exported="false" android:multiprocess="true" android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer"/>
! <provider android:authorities="top.distok.cutthecord.CTCBRANCH.crashlyticsinitprovider" android:exported="false" android:initOrder="90" android:name="com.crashlytics.android.CrashlyticsInitProvider"/>
<meta-data android:name="com.android.vending.derived.apk.id" android:value="1"/>
</application>
</manifest>
diff -crB from/apktool.yml to/apktool.yml
*** from/apktool.yml 2019-04-25 10:45:14.687646292 +0300
--- to/apktool.yml 2019-04-25 11:23:39.967485513 +0300
***************
*** 469,473 ****
tag: null
version: 2.4.1-73ac0d-SNAPSHOT
versionInfo:
! versionCode: '876'
! versionName: 8.7.6
--- 469,473 ----
tag: null
version: 2.4.1-73ac0d-SNAPSHOT
versionInfo:
! versionCode: '876CTCBUILD'
! versionName: 8.7.6-cutthecord-CTCBUILD
diff -crB from/res/values/strings.xml to/res/values/strings.xml
*** from/res/values/strings.xml 2019-04-25 10:45:10.627626294 +0300
--- to/res/values/strings.xml 2019-04-25 11:23:39.970818864 +0300
***************
*** 1258,1264 ****
<string name="disconnect_account_body">Disconnecting your account might remove you from servers you joined via this account.</string>
<string name="disconnect_account_title">Disconnect %1$s</string>
<string name="disconnect_from_voice">Disconnect from Voice</string>
! <string name="discord">Discord</string>
<string name="discord_desc_long">Free and secure chat for gamers, works on both your desktop and your phone.</string>
<string name="discord_desc_short">Team voice &amp; text chat</string>
<string name="discord_gg">discord.gg/</string>
--- 1258,1264 ----
<string name="disconnect_account_body">Disconnecting your account might remove you from servers you joined via this account.</string>
<string name="disconnect_account_title">Disconnect %1$s</string>
<string name="disconnect_from_voice">Disconnect from Voice</string>
! <string name="discord">CTCNAME</string>
<string name="discord_desc_long">Free and secure chat for gamers, works on both your desktop and your phone.</string>
<string name="discord_desc_short">Team voice &amp; text chat</string>
<string name="discord_gg">discord.gg/</string>
***************
*** 2886,2892 ****
<string name="notification_reply_failed">Failed to reply to %1$s</string>
<string name="notification_reply_success">Replied to %1$s</string>
<string name="notification_settings">Notification Settings</string>
! <string name="notification_title_discord">Discord</string>
<string name="notification_title_start_game">"Somebody Playin'"</string>
<string name="notifications">Notifications</string>
<string name="nsfw_accept">Continue</string>
--- 2886,2892 ----
<string name="notification_reply_failed">Failed to reply to %1$s</string>
<string name="notification_reply_success">Replied to %1$s</string>
<string name="notification_settings">Notification Settings</string>
! <string name="notification_title_discord">CTCNAME</string>
<string name="notification_title_start_game">"Somebody Playin'"</string>
<string name="notifications">Notifications</string>
<string name="nsfw_accept">Continue</string>

View file

@ -31,4 +31,5 @@ You can use the following line to patch authorities:
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

83
patches/compact/876.patch Normal file
View file

@ -0,0 +1,83 @@
diff -crB from/res/layout/widget_chat_list_adapter_item_text.xml to/res/layout/widget_chat_list_adapter_item_text.xml
*** from/res/layout/widget_chat_list_adapter_item_text.xml 2019-04-25 10:45:10.180957427 +0300
--- to/res/layout/widget_chat_list_adapter_item_text.xml 2019-04-25 11:23:45.657516652 +0300
***************
*** 2,12 ****
<androidx.constraintlayout.widget.ConstraintLayout android:background="?selectableItemBackground" android:paddingTop="10.0dip" android:paddingRight="@dimen/chat_cell_horizontal_spacing_padding" android:layout_width="fill_parent" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.Guideline android:id="@id/uikit_chat_guideline" style="@style/UiKit.Chat.Guideline" />
- <com.facebook.drawee.view.SimpleDraweeView android:id="@id/chat_list_adapter_item_text_avatar" android:layout_marginLeft="8.0dip" android:layout_marginTop="@dimen/uikit_spacing_small" android:importantForAccessibility="no" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="@id/uikit_chat_guideline" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@id/uikit_chat_guideline" app:layout_constraintStart_toStartOf="parent" style="@style/Avatar.Chat" />
<androidx.constraintlayout.widget.ConstraintLayout android:id="@id/chat_list_adapter_item_text_header" android:layout_width="wrap_content" android:layout_height="0.0dip" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toTopOf="@id/chat_list_adapter_item_text_avatar">
<TextView android:textColor="?theme_chat_name" android:id="@id/chat_list_adapter_item_text_name" android:lineSpacingMultiplier="1.0" app:layout_constrainedWidth="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" style="@style/UiKit.TextView.Large.SingleLine" />
<TextView android:textSize="9.5sp" android:textColor="@color/white" android:id="@id/chat_list_adapter_item_text_bot" android:background="@drawable/drawable_button_purple_neutral" android:paddingLeft="3.0dip" android:paddingTop="0.5dip" android:paddingRight="3.0dip" android:paddingBottom="0.5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:text="BOT" android:singleLine="true" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_name" style="@style/UiKit.TextView" />
<TextView android:textSize="@dimen/uikit_textsize_small" android:textColor="?theme_chat_timestamp" android:gravity="center_vertical" android:id="@id/chat_list_adapter_item_text_timestamp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:maxWidth="150.0dip" android:singleLine="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_bot" style="@style/UiKit.TextView" />
</androidx.constraintlayout.widget.ConstraintLayout>
- <com.discord.utilities.view.text.LinkifiedTextView android:id="@id/chat_list_adapter_item_text" android:layout_width="0.0dip" android:layout_marginTop="@dimen/uikit_spacing_xsmall" android:layout_marginRight="@dimen/uikit_spacing_small" android:layout_marginBottom="2.0dip" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toBottomOf="@id/chat_list_adapter_item_text_header" style="@style/UiKit.Chat.Text" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
--- 2,11 ----
<androidx.constraintlayout.widget.ConstraintLayout android:background="?selectableItemBackground" android:paddingTop="10.0dip" android:paddingRight="@dimen/chat_cell_horizontal_spacing_padding" android:layout_width="fill_parent" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.Guideline android:id="@id/uikit_chat_guideline" style="@style/UiKit.Chat.Guideline" />
<androidx.constraintlayout.widget.ConstraintLayout android:id="@id/chat_list_adapter_item_text_header" android:layout_width="wrap_content" android:layout_height="0.0dip" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toTopOf="@id/chat_list_adapter_item_text_avatar">
<TextView android:textColor="?theme_chat_name" android:id="@id/chat_list_adapter_item_text_name" android:lineSpacingMultiplier="1.0" app:layout_constrainedWidth="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" style="@style/UiKit.TextView.Large.SingleLine" />
<TextView android:textSize="9.5sp" android:textColor="@color/white" android:id="@id/chat_list_adapter_item_text_bot" android:background="@drawable/drawable_button_purple_neutral" android:paddingLeft="3.0dip" android:paddingTop="0.5dip" android:paddingRight="3.0dip" android:paddingBottom="0.5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:text="BOT" android:singleLine="true" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_name" style="@style/UiKit.TextView" />
<TextView android:textSize="@dimen/uikit_textsize_small" android:textColor="?theme_chat_timestamp" android:gravity="center_vertical" android:id="@id/chat_list_adapter_item_text_timestamp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:maxWidth="150.0dip" android:singleLine="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_bot" style="@style/UiKit.TextView" />
+ <com.discord.utilities.view.text.LinkifiedTextView android:id="@id/chat_list_adapter_item_text" app:layout_constrainedWidth="true" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:layout_marginStart="6.0dip" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toRightOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintRight_toRightOf="parent" style="@style/UiKit.Chat.Text" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff -crB from/res/layout-v17/widget_chat_list_adapter_item_text.xml to/res/layout-v17/widget_chat_list_adapter_item_text.xml
*** from/res/layout-v17/widget_chat_list_adapter_item_text.xml 2019-04-25 10:45:09.770955407 +0300
--- to/res/layout-v17/widget_chat_list_adapter_item_text.xml 2019-04-25 11:23:45.657516652 +0300
***************
*** 2,12 ****
<androidx.constraintlayout.widget.ConstraintLayout android:background="?selectableItemBackground" android:paddingTop="10.0dip" android:paddingRight="@dimen/chat_cell_horizontal_spacing_padding" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingEnd="@dimen/chat_cell_horizontal_spacing_padding"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.Guideline android:id="@id/uikit_chat_guideline" style="@style/UiKit.Chat.Guideline" />
- <com.facebook.drawee.view.SimpleDraweeView android:id="@id/chat_list_adapter_item_text_avatar" android:layout_marginLeft="8.0dip" android:layout_marginTop="@dimen/uikit_spacing_small" android:importantForAccessibility="no" android:layout_marginStart="8.0dip" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="@id/uikit_chat_guideline" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@id/uikit_chat_guideline" app:layout_constraintStart_toStartOf="parent" style="@style/Avatar.Chat" />
<androidx.constraintlayout.widget.ConstraintLayout android:id="@id/chat_list_adapter_item_text_header" android:layout_width="wrap_content" android:layout_height="0.0dip" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toTopOf="@id/chat_list_adapter_item_text_avatar">
<TextView android:textColor="?theme_chat_name" android:id="@id/chat_list_adapter_item_text_name" android:lineSpacingMultiplier="1.0" app:layout_constrainedWidth="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" style="@style/UiKit.TextView.Large.SingleLine" />
<TextView android:textSize="9.5sp" android:textColor="@color/white" android:id="@id/chat_list_adapter_item_text_bot" android:background="@drawable/drawable_button_purple_neutral" android:paddingLeft="3.0dip" android:paddingTop="0.5dip" android:paddingRight="3.0dip" android:paddingBottom="0.5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:text="BOT" android:singleLine="true" android:layout_marginStart="6.0dip" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_name" style="@style/UiKit.TextView" />
<TextView android:textSize="@dimen/uikit_textsize_small" android:textColor="?theme_chat_timestamp" android:gravity="center_vertical" android:id="@id/chat_list_adapter_item_text_timestamp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:maxWidth="150.0dip" android:singleLine="true" android:layout_marginStart="6.0dip" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_bot" style="@style/UiKit.TextView" />
</androidx.constraintlayout.widget.ConstraintLayout>
- <com.discord.utilities.view.text.LinkifiedTextView android:id="@id/chat_list_adapter_item_text" android:layout_width="0.0dip" android:layout_marginTop="@dimen/uikit_spacing_xsmall" android:layout_marginRight="@dimen/uikit_spacing_small" android:layout_marginBottom="2.0dip" android:layout_marginEnd="@dimen/uikit_spacing_small" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toBottomOf="@id/chat_list_adapter_item_text_header" style="@style/UiKit.Chat.Text" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
--- 2,14 ----
<androidx.constraintlayout.widget.ConstraintLayout android:background="?selectableItemBackground" android:paddingTop="10.0dip" android:paddingRight="@dimen/chat_cell_horizontal_spacing_padding" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingEnd="@dimen/chat_cell_horizontal_spacing_padding"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.Guideline android:id="@id/uikit_chat_guideline" style="@style/UiKit.Chat.Guideline" />
<androidx.constraintlayout.widget.ConstraintLayout android:id="@id/chat_list_adapter_item_text_header" android:layout_width="wrap_content" android:layout_height="0.0dip" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toTopOf="@id/chat_list_adapter_item_text_avatar">
<TextView android:textColor="?theme_chat_name" android:id="@id/chat_list_adapter_item_text_name" android:lineSpacingMultiplier="1.0" app:layout_constrainedWidth="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" style="@style/UiKit.TextView.Large.SingleLine" />
+
<TextView android:textSize="9.5sp" android:textColor="@color/white" android:id="@id/chat_list_adapter_item_text_bot" android:background="@drawable/drawable_button_purple_neutral" android:paddingLeft="3.0dip" android:paddingTop="0.5dip" android:paddingRight="3.0dip" android:paddingBottom="0.5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:text="BOT" android:singleLine="true" android:layout_marginStart="6.0dip" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_name" style="@style/UiKit.TextView" />
+
<TextView android:textSize="@dimen/uikit_textsize_small" android:textColor="?theme_chat_timestamp" android:gravity="center_vertical" android:id="@id/chat_list_adapter_item_text_timestamp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:maxWidth="150.0dip" android:singleLine="true" android:layout_marginStart="6.0dip" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_bot" style="@style/UiKit.TextView" />
+
+ <com.discord.utilities.view.text.LinkifiedTextView android:id="@id/chat_list_adapter_item_text" app:layout_constrainedWidth="true" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:layout_marginStart="6.0dip" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toRightOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintRight_toRightOf="parent" style="@style/UiKit.Chat.Text" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff -crB from/res/values/dimens.xml to/res/values/dimens.xml
*** from/res/values/dimens.xml 2019-04-25 10:45:10.547625899 +0300
--- to/res/values/dimens.xml 2019-04-25 11:23:45.660850003 +0300
***************
*** 334,341 ****
<dimen name="uikit_btn_padding_vertical">4.0dip</dimen>
<dimen name="uikit_btn_stroke_width">1.0dip</dimen>
<dimen name="uikit_btn_wrapped_min_width">96.0dip</dimen>
! <dimen name="uikit_guideline_chat">58.0dip</dimen>
! <dimen name="uikit_guideline_chat_embed">62.0dip</dimen>
<dimen name="uikit_guideline_item_row">48.0dip</dimen>
<dimen name="uikit_guideline_sheet">72.0dip</dimen>
<dimen name="uikit_image_border_size">3.0dip</dimen>
--- 334,341 ----
<dimen name="uikit_btn_padding_vertical">4.0dip</dimen>
<dimen name="uikit_btn_stroke_width">1.0dip</dimen>
<dimen name="uikit_btn_wrapped_min_width">96.0dip</dimen>
! <dimen name="uikit_guideline_chat">20.0dip</dimen>
! <dimen name="uikit_guideline_chat_embed">24.0dip</dimen>
<dimen name="uikit_guideline_item_row">48.0dip</dimen>
<dimen name="uikit_guideline_sheet">72.0dip</dimen>
<dimen name="uikit_image_border_size">3.0dip</dimen>

View file

@ -20,4 +20,5 @@ This patch, when combined with `smalltime` patch, emulates the "compact"/"irc" t
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

View file

@ -0,0 +1,235 @@
diff -crB -x dist -x build com.discord-876-base/res/values/colors.xml com.discord-876/res/values/colors.xml
*** com.discord-876-base/res/values/colors.xml 2019-04-25 11:32:32.232915774 +0300
--- com.discord-876/res/values/colors.xml 2019-04-25 11:41:17.261090022 +0300
***************
*** 61,68 ****
<color name="common_google_signin_btn_text_light_disabled">#1f000000</color>
<color name="common_google_signin_btn_text_light_focused">#90000000</color>
<color name="common_google_signin_btn_text_light_pressed">#de000000</color>
! <color name="dark_grey_2">#ff36393e</color>
! <color name="dark_grey_2_alpha_10">#ff303337</color>
<color name="design_bottom_navigation_shadow_color">#14000000</color>
<color name="design_default_color_primary">#ff3f51b5</color>
<color name="design_default_color_primary_dark">#ff303f9f</color>
--- 61,68 ----
<color name="common_google_signin_btn_text_light_disabled">#1f000000</color>
<color name="common_google_signin_btn_text_light_focused">#90000000</color>
<color name="common_google_signin_btn_text_light_pressed">#de000000</color>
! <color name="dark_grey_2">#ff000000</color>
! <color name="dark_grey_2_alpha_10">#ff000000</color>
<color name="design_bottom_navigation_shadow_color">#14000000</color>
<color name="design_default_color_primary">#ff3f51b5</color>
<color name="design_default_color_primary_dark">#ff303f9f</color>
***************
*** 98,106 ****
<color name="grey_6_alpha_05">#0d4f545c</color>
<color name="grey_6_alpha_30">#4d4f545c</color>
<color name="grey_6_alpha_60">#994f545c</color>
! <color name="grey_account">#ff282b30</color>
! <color name="grey_channels">#ff2e3136</color>
! <color name="grey_guilds">#ff1e2124</color>
<color name="grey_unread">#ff8a8e94</color>
<color name="highlighted_text_material_dark">#6680cbc4</color>
<color name="highlighted_text_material_light">#66009688</color>
--- 98,106 ----
<color name="grey_6_alpha_05">#0d4f545c</color>
<color name="grey_6_alpha_30">#4d4f545c</color>
<color name="grey_6_alpha_60">#994f545c</color>
! <color name="grey_account">#ff000000</color>
! <color name="grey_channels">#ff000000</color>
! <color name="grey_guilds">#ff000000</color>
<color name="grey_unread">#ff8a8e94</color>
<color name="highlighted_text_material_dark">#6680cbc4</color>
<color name="highlighted_text_material_light">#66009688</color>
***************
*** 109,123 ****
<color name="hypesquad_house3">#ff45ddc0</color>
<color name="icon_color_light">#ff93a5af</color>
<color name="league_of_legends">#ff021f25</color>
! <color name="link_100">#fff2fbfe</color>
! <color name="link_200">#ffcceffd</color>
! <color name="link_300">#ff99dffb</color>
! <color name="link_400">#ff33c0f6</color>
! <color name="link_500">#ff00b0f4</color>
! <color name="link_600">#ff0078a6</color>
! <color name="link_700">#ff004662</color>
! <color name="link_800">#ff003549</color>
! <color name="link_900">#ff00090c</color>
<color name="material_blue_grey_800">#ff37474f</color>
<color name="material_blue_grey_900">#ff263238</color>
<color name="material_blue_grey_950">#ff21272b</color>
--- 109,123 ----
<color name="hypesquad_house3">#ff45ddc0</color>
<color name="icon_color_light">#ff93a5af</color>
<color name="league_of_legends">#ff021f25</color>
! <color name="link_100">#ff8cf687</color>
! <color name="link_200">#ff7df577</color>
! <color name="link_300">#ff6ef368</color>
! <color name="link_400">#ff5ff258</color>
! <color name="link_500">#ff50f148</color>
! <color name="link_600">#ff41f038</color>
! <color name="link_700">#ff32ef28</color>
! <color name="link_800">#ff23ed19</color>
! <color name="link_900">#ff1be411</color>
<color name="material_blue_grey_800">#ff37474f</color>
<color name="material_blue_grey_900">#ff263238</color>
<color name="material_blue_grey_950">#ff21272b</color>
***************
*** 159,176 ****
<color name="primary_400_alpha_30">#4d7d8187</color>
<color name="primary_400_alpha_60">#997d8187</color>
<color name="primary_400_alpha_90">#e67d8187</color>
! <color name="primary_500">#ff4f545c</color>
! <color name="primary_500_alpha_30">#4d4f545c</color>
! <color name="primary_500_alpha_60">#994f545c</color>
! <color name="primary_500_alpha_90">#e64f545c</color>
! <color name="primary_600">#ff36393f</color>
! <color name="primary_600_alpha_30">#4d36393f</color>
! <color name="primary_600_alpha_60">#9936393f</color>
! <color name="primary_600_alpha_90">#e636393f</color>
! <color name="primary_630">#ff2f3136</color>
! <color name="primary_630_alpha_30">#4d2f3136</color>
! <color name="primary_630_alpha_60">#992f3136</color>
! <color name="primary_630_alpha_90">#e62f3136</color>
<color name="primary_660">#ff292b2f</color>
<color name="primary_660_alpha_30">#4d292b2f</color>
<color name="primary_660_alpha_60">#99292b2f</color>
--- 159,176 ----
<color name="primary_400_alpha_30">#4d7d8187</color>
<color name="primary_400_alpha_60">#997d8187</color>
<color name="primary_400_alpha_90">#e67d8187</color>
! <color name="primary_500">#ff0f0f0f</color>
! <color name="primary_500_alpha_30">#4d0f0f0f</color>
! <color name="primary_500_alpha_60">#990f0f0f</color>
! <color name="primary_500_alpha_90">#e60f0f0f</color>
! <color name="primary_600">#ff000000</color>
! <color name="primary_600_alpha_30">#4d000000</color>
! <color name="primary_600_alpha_60">#99000000</color>
! <color name="primary_600_alpha_90">#e6000000</color>
! <color name="primary_630">#ff000000</color>
! <color name="primary_630_alpha_30">#4d000000</color>
! <color name="primary_630_alpha_60">#99000000</color>
! <color name="primary_630_alpha_90">#e6000000</color>
<color name="primary_660">#ff292b2f</color>
<color name="primary_660_alpha_30">#4d292b2f</color>
<color name="primary_660_alpha_60">#99292b2f</color>
***************
*** 195,203 ****
<color name="primary_text_default_material_light">#de000000</color>
<color name="primary_text_disabled_material_dark">#4dffffff</color>
<color name="primary_text_disabled_material_light">#39000000</color>
! <color name="purple_brand">#ff738bd7</color>
! <color name="purple_brand_alpha_10">#1a738bd7</color>
! <color name="purple_brand_dark">#ff697ec4</color>
<color name="purple_brand_hint">#ffc9d2f0</color>
<color name="purple_brand_notification">#ff5161ff</color>
<color name="reaction_background_me_dark">#4d5c6a9e</color>
--- 195,203 ----
<color name="primary_text_default_material_light">#de000000</color>
<color name="primary_text_disabled_material_dark">#4dffffff</color>
<color name="primary_text_disabled_material_light">#39000000</color>
! <color name="purple_brand">#ff9c4249</color>
! <color name="purple_brand_alpha_10">#ff9c4249</color>
! <color name="purple_brand_dark">#ff000000</color>
<color name="purple_brand_hint">#ffc9d2f0</color>
<color name="purple_brand_notification">#ff5161ff</color>
<color name="reaction_background_me_dark">#4d5c6a9e</color>
diff -crB -x dist -x build com.discord-876-base/res/values/styles.xml com.discord-876/res/values/styles.xml
*** com.discord-876-base/res/values/styles.xml 2019-04-25 11:32:32.109582104 +0300
--- com.discord-876/res/values/styles.xml 2019-04-25 11:44:13.935296023 +0300
***************
*** 116,122 ****
<item name="colorPrimary">@color/primary_600</item>
<item name="colorPrimaryBg">@drawable/drawable_uikit_primary_600_bg_dark</item>
<item name="colorPrimaryCircle">@drawable/drawable_uikit_primary_600_circle</item>
! <item name="colorPrimaryDark">#ff2b2e31</item>
<item name="colorPrimaryDivider">@color/primary_500_alpha_60</item>
<item name="colorPrimaryTabs">@color/black_alpha_05</item>
<item name="dialogTheme">@style/AppTheme.Dark.Notice</item>
--- 116,122 ----
<item name="colorPrimary">@color/primary_600</item>
<item name="colorPrimaryBg">@drawable/drawable_uikit_primary_600_bg_dark</item>
<item name="colorPrimaryCircle">@drawable/drawable_uikit_primary_600_circle</item>
! <item name="colorPrimaryDark">@color/primary_630</item>
<item name="colorPrimaryDivider">@color/primary_500_alpha_60</item>
<item name="colorPrimaryTabs">@color/black_alpha_05</item>
<item name="dialogTheme">@style/AppTheme.Dark.Notice</item>
***************
*** 333,339 ****
<item name="tabSelectedTextColor">@color/white</item>
<item name="tabTextColor">@color/white_alpha_40</item>
<item name="theme_backspace_icon">@drawable/ic_backspace_white_24dp</item>
! <item name="theme_chat_blocked_bg">#ff34373c</item>
<item name="theme_chat_blocked_text">@color/grey_unread</item>
<item name="theme_chat_code">@color/grey_channels</item>
<item name="theme_chat_codeblock_border">@color/grey_account</item>
--- 333,339 ----
<item name="tabSelectedTextColor">@color/white</item>
<item name="tabTextColor">@color/white_alpha_40</item>
<item name="theme_backspace_icon">@drawable/ic_backspace_white_24dp</item>
! <item name="theme_chat_blocked_bg">@color/primary_500</item>
<item name="theme_chat_blocked_text">@color/grey_unread</item>
<item name="theme_chat_code">@color/grey_channels</item>
<item name="theme_chat_codeblock_border">@color/grey_account</item>
***************
*** 347,358 ****
<item name="theme_chat_input_button_tint_colors">@color/chat_input_button_tint_colors_dark</item>
<item name="theme_chat_input_content_tab_bg">@drawable/drawable_rect_rounded_dark</item>
<item name="theme_chat_input_divider">@color/dark_grey_2_alpha_10</item>
! <item name="theme_chat_input_edit">#ff3e4145</item>
<item name="theme_chat_input_photo_selection_icon">@drawable/ic_img_selected_dark_theme</item>
<item name="theme_chat_input_text">@color/white_alpha_70</item>
<item name="theme_chat_input_text_placeholder">@color/white_alpha_20</item>
<item name="theme_chat_loading_spinner_color">@color/white</item>
! <item name="theme_chat_mentioned_me">#1afaa61a</item>
<item name="theme_chat_name">@color/white</item>
<item name="theme_chat_reaction_background">@drawable/drawable_bg_reaction_dark</item>
<item name="theme_chat_reaction_text_color">@drawable/drawable_reaction_text_color_dark</item>
--- 347,358 ----
<item name="theme_chat_input_button_tint_colors">@color/chat_input_button_tint_colors_dark</item>
<item name="theme_chat_input_content_tab_bg">@drawable/drawable_rect_rounded_dark</item>
<item name="theme_chat_input_divider">@color/dark_grey_2_alpha_10</item>
! <item name="theme_chat_input_edit">@color/primary_600</item>
<item name="theme_chat_input_photo_selection_icon">@drawable/ic_img_selected_dark_theme</item>
<item name="theme_chat_input_text">@color/white_alpha_70</item>
<item name="theme_chat_input_text_placeholder">@color/white_alpha_20</item>
<item name="theme_chat_loading_spinner_color">@color/white</item>
! <item name="theme_chat_mentioned_me">@color/purple_brand_alpha_10</item>
<item name="theme_chat_name">@color/white</item>
<item name="theme_chat_reaction_background">@drawable/drawable_bg_reaction_dark</item>
<item name="theme_chat_reaction_text_color">@drawable/drawable_reaction_text_color_dark</item>
***************
*** 418,424 ****
<item name="colorControlActivated">@color/brand_500</item>
<item name="colorControlNormal">@color/primary_100</item>
<item name="colorPrimary">@color/primary_600</item>
! <item name="colorPrimaryDark">#ff2b2e31</item>
</style>
<style name="AppTheme.Dark.Evil" parent="@style/AppTheme.Dark">
<item name="colorAccent">@color/brand_600</item>
--- 418,424 ----
<item name="colorControlActivated">@color/brand_500</item>
<item name="colorControlNormal">@color/primary_100</item>
<item name="colorPrimary">@color/primary_600</item>
! <item name="colorPrimaryDark">@color/primary_630</item>
</style>
<style name="AppTheme.Dark.Evil" parent="@style/AppTheme.Dark">
<item name="colorAccent">@color/brand_600</item>
***************
*** 450,456 ****
<item name="colorControlActivated">@color/brand_500</item>
<item name="colorControlNormal">@color/primary_100</item>
<item name="colorPrimary">@color/primary_600</item>
! <item name="colorPrimaryDark">#ff2b2e31</item>
</style>
<style name="AppTheme.Dark.Notice.PositiveRed" parent="@style/AppTheme.Dark.Notice">
<item name="buttonBarPositiveButtonStyle">@style/UiKit.Button.Red.Fit</item>
--- 450,456 ----
<item name="colorControlActivated">@color/brand_500</item>
<item name="colorControlNormal">@color/primary_100</item>
<item name="colorPrimary">@color/primary_600</item>
! <item name="colorPrimaryDark">@color/primary_630</item>
</style>
<style name="AppTheme.Dark.Notice.PositiveRed" parent="@style/AppTheme.Dark.Notice">
<item name="buttonBarPositiveButtonStyle">@style/UiKit.Button.Red.Fit</item>

View file

@ -30,6 +30,7 @@ Self note: Top bar color is set by `setStatusBarColorResourceId`
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6
#### Value reference #### Value reference

View file

@ -0,0 +1,20 @@
diff -crB from/smali/com/discord/widgets/settings/WidgetSettings.smali to/smali/com/discord/widgets/settings/WidgetSettings.smali
*** from/smali/com/discord/widgets/settings/WidgetSettings.smali 2019-04-25 10:45:13.020971416 +0300
--- to/smali/com/discord/widgets/settings/WidgetSettings.smali 2019-04-25 11:23:43.707505980 +0300
***************
*** 1475,1481 ****
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
! const-string v2, " - 8.7.6 (876)"
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
--- 1475,1481 ----
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
! const-string v2, " - 8.7.6 (876), with Cutthecord patches"
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

View file

@ -23,4 +23,5 @@ This patch replaces version string and adds mention of cutthecord in the user se
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

View file

@ -0,0 +1,21 @@
diff -crB -x dist -x build com.discord-848-base/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali com.discord-848/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali
*** com.discord-848-base/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali 2019-02-17 12:23:56.197569493 +0300
--- com.discord-848/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali 2019-02-17 12:30:27.483215799 +0300
***************
*** 182,188 ****
const-string v1, "browser"
! const-string v2, "Discord Android"
.line 64
invoke-static {v1, v2}, Lkotlin/q;->m(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
--- 182,188 ----
const-string v1, "browser"
! const-string v2, "Discord Client"
.line 64
invoke-static {v1, v2}, Lkotlin/q;->m(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;

View file

@ -24,4 +24,5 @@ However, this causes some issues. See the `Bugs / Side effects` list below.
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

View file

@ -0,0 +1,160 @@
diff -crB -x dist -x build com.discord-876-base/smali/com/discord/stores/StoreExperiments$getExperimentalAlpha$1.smali com.discord-876/smali/com/discord/stores/StoreExperiments$getExperimentalAlpha$1.smali
*** com.discord-876-base/smali/com/discord/stores/StoreExperiments$getExperimentalAlpha$1.smali 2019-04-25 11:32:34.322921489 +0300
--- com.discord-876/smali/com/discord/stores/StoreExperiments$getExperimentalAlpha$1.smali 2019-04-25 11:31:28.376074491 +0300
***************
*** 81,108 ****
.method public final call(Lcom/discord/models/domain/ModelUser;Lcom/discord/models/domain/ModelGuild;)Z
.locals 1
- const-string v0, "meUser"
-
- .line 95
- invoke-static {p1, v0}, Lkotlin/jvm/internal/j;->g(Ljava/lang/Object;Ljava/lang/String;)V
-
- invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->isStaff()Z
-
- move-result p1
-
- if-nez p1, :cond_1
-
- if-eqz p2, :cond_0
-
- goto :goto_0
-
- :cond_0
- const/4 p1, 0x0
-
- return p1
-
- :cond_1
- :goto_0
const/4 p1, 0x1
return p1
--- 81,86 ----
diff -crB -x dist -x build com.discord-876-base/smali/com/discord/stores/StoreExperiments.smali com.discord-876/smali/com/discord/stores/StoreExperiments.smali
*** com.discord-876-base/smali/com/discord/stores/StoreExperiments.smali 2019-04-25 11:32:34.326254832 +0300
--- com.discord-876/smali/com/discord/stores/StoreExperiments.smali 2019-04-25 11:26:39.558468377 +0300
***************
*** 1275,1326 ****
const/4 v1, 0x1
- if-eqz v0, :cond_0
-
- iget-object v0, p0, Lcom/discord/stores/StoreExperiments;->stream:Lcom/discord/stores/StoreStream;
-
- iget-object v0, v0, Lcom/discord/stores/StoreStream;->users:Lcom/discord/stores/StoreUser;
-
- iget-object v0, v0, Lcom/discord/stores/StoreUser;->me:Lcom/discord/models/domain/ModelUser$Me;
-
- if-eqz v0, :cond_0
-
- invoke-virtual {v0}, Lcom/discord/models/domain/ModelUser$Me;->isStaff()Z
-
- move-result v0
-
- if-eq v0, v1, :cond_1
-
- :cond_0
- iget-object v0, p0, Lcom/discord/stores/StoreExperiments;->stream:Lcom/discord/stores/StoreStream;
-
- iget-object v0, v0, Lcom/discord/stores/StoreStream;->guilds:Lcom/discord/stores/StoreGuilds;
-
- iget-object v0, v0, Lcom/discord/stores/StoreGuilds;->guilds:Ljava/util/Map;
-
- const-string v2, "stream.guilds.guilds"
-
- invoke-static {v0, v2}, Lkotlin/jvm/internal/j;->g(Ljava/lang/Object;Ljava/lang/String;)V
-
- const-wide v2, 0x2bc056ab0800006L
-
- invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
-
- move-result-object v2
-
- invoke-interface {v0, v2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
-
- move-result v0
-
- if-eqz v0, :cond_2
-
- :cond_1
return v1
-
- :cond_2
- const/4 v0, 0x0
-
- return v0
.end method
.method public final isInitialized()Lrx/Observable;
--- 1275,1281 ----
diff -crB -x dist -x build com.discord-876-base/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$2.smali com.discord-876/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$2.smali
*** com.discord-876-base/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$2.smali 2019-04-25 11:32:35.082923567 +0300
--- com.discord-876/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$2.smali 2019-04-25 11:28:58.758998696 +0300
***************
*** 108,118 ****
const-string v0, "meUser"
.line 206
! invoke-static {p1, v0}, Lkotlin/jvm/internal/j;->g(Ljava/lang/Object;Ljava/lang/String;)V
!
! invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->isStaff()Z
!
! move-result v2
.line 207
invoke-virtual {p3}, Ljava/lang/Boolean;->booleanValue()Z
--- 108,114 ----
const-string v0, "meUser"
.line 206
! const/4 v2, 0x1
.line 207
invoke-virtual {p3}, Ljava/lang/Boolean;->booleanValue()Z
***************
*** 124,134 ****
const-string p3, "fontScale"
.line 208
! invoke-static {p4, p3}, Lkotlin/jvm/internal/j;->g(Ljava/lang/Object;Ljava/lang/String;)V
!
! invoke-virtual {p4}, Ljava/lang/Integer;->intValue()I
!
! move-result v4
const-string p3, "isAlphaTesterOrStaff"
--- 120,126 ----
const-string p3, "fontScale"
.line 208
! const/4 v4, 0x1
const-string p3, "isAlphaTesterOrStaff"
diff -crB -x dist -x build com.discord-876-base/smali/com/discord/widgets/settings/WidgetSettings.smali com.discord-876/smali/com/discord/widgets/settings/WidgetSettings.smali
*** com.discord-876-base/smali/com/discord/widgets/settings/WidgetSettings.smali 2019-04-25 11:32:35.089590253 +0300
--- com.discord-876/smali/com/discord/widgets/settings/WidgetSettings.smali 2019-04-25 11:29:18.509052701 +0300
***************
*** 783,791 ****
if-eqz p1, :cond_1
.line 121
! invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->isStaff()Z
!
! move-result v2
if-eq v2, v0, :cond_0
--- 783,789 ----
if-eqz p1, :cond_1
.line 121
! const/4 v2, 0x1
if-eq v2, v0, :cond_0

View file

@ -26,4 +26,5 @@ Conflicts with pureevil as it's included here.
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

329
patches/litecord/876.patch Normal file
View file

@ -0,0 +1,329 @@
diff -crB from/smali/com/discord/app/App.smali to/smali/com/discord/app/App.smali
*** from/smali/com/discord/app/App.smali 2019-04-25 10:45:11.914299298 +0300
--- to/smali/com/discord/app/App.smali 2019-04-25 11:23:38.107475334 +0300
***************
*** 212,218 ****
invoke-virtual {v0, v1}, Lcom/discord/utilities/view/text/LinkifiedTextView$Companion;->init(Lkotlin/jvm/functions/Function2;)Lkotlin/Unit;
! const-string v0, "https://cdn.discordapp.com"
.line 71
invoke-static {v0}, Lcom/discord/models/domain/emoji/ModelEmojiCustom;->setCdnUri(Ljava/lang/String;)V
--- 212,218 ----
invoke-virtual {v0, v1}, Lcom/discord/utilities/view/text/LinkifiedTextView$Companion;->init(Lkotlin/jvm/functions/Function2;)Lkotlin/Unit;
! const-string v0, "https://dev.litecord.top"
.line 71
invoke-static {v0}, Lcom/discord/models/domain/emoji/ModelEmojiCustom;->setCdnUri(Ljava/lang/String;)V
diff -crB from/smali/com/discord/BuildConfig.smali to/smali/com/discord/BuildConfig.smali
*** from/smali/com/discord/BuildConfig.smali 2019-04-25 10:45:11.907632598 +0300
--- to/smali/com/discord/BuildConfig.smali 2019-04-25 11:23:38.107475334 +0300
***************
*** 16,30 ****
.field public static final FLAVOR_internalExternal:Ljava/lang/String; = "external"
! .field public static final HOST:Ljava/lang/String; = "https://discordapp.com"
! .field public static final HOST_API:Ljava/lang/String; = "https://discordapp.com/api/"
! .field public static final HOST_CDN:Ljava/lang/String; = "https://cdn.discordapp.com"
.field public static final HOST_GIFT:Ljava/lang/String; = "https://discord.gift"
! .field public static final HOST_INVITE:Ljava/lang/String; = "https://discord.gg"
.field public static final LOCAL_IP:Ljava/lang/String; = ""
--- 16,30 ----
.field public static final FLAVOR_internalExternal:Ljava/lang/String; = "external"
! .field public static final HOST:Ljava/lang/String; = "https://dev.litecord.top"
! .field public static final HOST_API:Ljava/lang/String; = "https://dev.litecord.top/api/"
! .field public static final HOST_CDN:Ljava/lang/String; = "https://dev.litecord.top"
.field public static final HOST_GIFT:Ljava/lang/String; = "https://discord.gift"
! .field public static final HOST_INVITE:Ljava/lang/String; = "https://dev.litecord.top"
.field public static final LOCAL_IP:Ljava/lang/String; = ""
diff -crB from/smali/com/discord/gateway/GatewaySocket.smali to/smali/com/discord/gateway/GatewaySocket.smali
*** from/smali/com/discord/gateway/GatewaySocket.smali 2019-04-25 10:45:11.947632796 +0300
--- to/smali/com/discord/gateway/GatewaySocket.smali 2019-04-25 11:23:38.107475334 +0300
***************
*** 42,48 ****
.end annotation
.end field
! .field private static final GATEWAY_COMPRESSION:Ljava/lang/String; = "zlib-stream"
.field private static final GATEWAY_ENCODING:Ljava/lang/String; = "json"
--- 42,48 ----
.end annotation
.end field
! .field private static final GATEWAY_COMPRESSION:Ljava/lang/String; = ""
.field private static final GATEWAY_ENCODING:Ljava/lang/String; = "json"
***************
*** 1050,1056 ****
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
! const-string p1, "/?encoding=json&v=6&compress=zlib-stream"
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
--- 1050,1056 ----
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
! const-string p1, "/?encoding=json&v=6"
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
diff -crB from/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali to/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali
*** from/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali 2019-04-25 10:45:11.950966145 +0300
--- to/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali 2019-04-25 11:23:38.107475334 +0300
***************
*** 59,64 ****
--- 59,66 ----
const/4 v0, 0x0
+ const/4 p3, 0x0
+
.line 27
invoke-direct {p0, v0}, Lcom/discord/gateway/io/OutgoingPayload;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
diff -crB from/smali/com/discord/stores/StoreGatewayConnection.smali to/smali/com/discord/stores/StoreGatewayConnection.smali
*** from/smali/com/discord/stores/StoreGatewayConnection.smali 2019-04-25 10:45:12.167633879 +0300
--- to/smali/com/discord/stores/StoreGatewayConnection.smali 2019-04-25 11:23:38.107475334 +0300
***************
*** 1340,1346 ****
.line 263
new-instance v9, Lcom/discord/gateway/rest/RestConfig;
! const-string v2, "https://discordapp.com/api/"
sget-object v3, Lcom/discord/utilities/rest/RestAPI$AppHeadersProvider;->INSTANCE:Lcom/discord/utilities/rest/RestAPI$AppHeadersProvider;
--- 1340,1346 ----
.line 263
new-instance v9, Lcom/discord/gateway/rest/RestConfig;
! const-string v2, "https://dev.litecord.top/api/"
sget-object v3, Lcom/discord/utilities/rest/RestAPI$AppHeadersProvider;->INSTANCE:Lcom/discord/utilities/rest/RestAPI$AppHeadersProvider;
diff -crB from/smali/com/discord/utilities/icon/IconUtils.smali to/smali/com/discord/utilities/icon/IconUtils.smali
*** from/smali/com/discord/utilities/icon/IconUtils.smali 2019-04-25 10:45:12.434301859 +0300
--- to/smali/com/discord/utilities/icon/IconUtils.smali 2019-04-25 11:23:38.107475334 +0300
***************
*** 377,383 ****
goto :goto_2
:cond_1
! const-string p3, "https://cdn.discordapp.com"
.line 109
check-cast p3, Ljava/lang/CharSequence;
--- 377,383 ----
goto :goto_2
:cond_1
! const-string p3, "https://dev.litecord.top"
.line 109
check-cast p3, Ljava/lang/CharSequence;
***************
*** 425,431 ****
:cond_3
new-instance p3, Ljava/lang/StringBuilder;
! const-string v0, "https://cdn.discordapp.com/channel-icons/"
invoke-direct {p3, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
--- 425,431 ----
:cond_3
new-instance p3, Ljava/lang/StringBuilder;
! const-string v0, "https://dev.litecord.top/channel-icons/"
invoke-direct {p3, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
***************
*** 667,673 ****
goto :goto_1
:cond_0
! const-string p2, "https://cdn.discordapp.com"
.line 142
check-cast p2, Ljava/lang/CharSequence;
--- 667,673 ----
goto :goto_1
:cond_0
! const-string p2, "https://dev.litecord.top"
.line 142
check-cast p2, Ljava/lang/CharSequence;
***************
*** 717,723 ****
:cond_2
new-instance p2, Ljava/lang/StringBuilder;
! const-string v0, "https://cdn.discordapp.com/icons/"
invoke-direct {p2, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
--- 717,723 ----
:cond_2
new-instance p2, Ljava/lang/StringBuilder;
! const-string v0, "https://dev.litecord.top/icons/"
invoke-direct {p2, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
***************
*** 918,924 ****
:cond_0
if-eqz p1, :cond_4
! const-string p2, "https://cdn.discordapp.com"
.line 88
check-cast p2, Ljava/lang/CharSequence;
--- 918,924 ----
:cond_0
if-eqz p1, :cond_4
! const-string p2, "https://dev.litecord.top"
.line 88
check-cast p2, Ljava/lang/CharSequence;
***************
*** 987,993 ****
:goto_1
new-instance p3, Ljava/lang/StringBuilder;
! const-string v0, "https://cdn.discordapp.com/avatars/"
invoke-direct {p3, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
--- 987,993 ----
:goto_1
new-instance p3, Ljava/lang/StringBuilder;
! const-string v0, "https://dev.litecord.top/avatars/"
invoke-direct {p3, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
***************
*** 1855,1861 ****
.line 182
new-instance v0, Ljava/lang/StringBuilder;
! const-string v1, "https://cdn.discordapp.com/app-assets/"
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
--- 1855,1861 ----
.line 182
new-instance v0, Ljava/lang/StringBuilder;
! const-string v1, "https://dev.litecord.top/app-assets/"
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
diff -crB from/smali/com/discord/utilities/rest/RestAPI$Companion.smali to/smali/com/discord/utilities/rest/RestAPI$Companion.smali
*** from/smali/com/discord/utilities/rest/RestAPI$Companion.smali 2019-04-25 10:45:12.487635455 +0300
--- to/smali/com/discord/utilities/rest/RestAPI$Companion.smali 2019-04-25 11:23:38.110808685 +0300
***************
*** 318,324 ****
.line 219
new-instance v0, Lcom/discord/restapi/RestAPIBuilder;
! const-string v9, "https://discordapp.com/api/"
check-cast v6, Lokhttp3/m;
--- 318,324 ----
.line 219
new-instance v0, Lcom/discord/restapi/RestAPIBuilder;
! const-string v9, "https://dev.litecord.top/api/"
check-cast v6, Lokhttp3/m;
diff -crB from/smali/com/discord/utilities/textprocessing/Rules$createCustomEmojiRule$1$parse$emojiNode$1.smali to/smali/com/discord/utilities/textprocessing/Rules$createCustomEmojiRule$1$parse$emojiNode$1.smali
*** from/smali/com/discord/utilities/textprocessing/Rules$createCustomEmojiRule$1$parse$emojiNode$1.smali 2019-04-25 10:45:12.537635702 +0300
--- to/smali/com/discord/utilities/textprocessing/Rules$createCustomEmojiRule$1$parse$emojiNode$1.smali 2019-04-25 11:23:38.110808685 +0300
***************
*** 105,111 ****
:goto_1
new-instance p2, Ljava/lang/StringBuilder;
! const-string v0, "https://cdn.discordapp.com/emojis/"
invoke-direct {p2, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
--- 105,111 ----
:goto_1
new-instance p2, Ljava/lang/StringBuilder;
! const-string v0, "https://dev.litecord.top/emojis/"
invoke-direct {p2, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
diff -crB from/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGameInvite.smali to/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGameInvite.smali
*** from/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGameInvite.smali 2019-04-25 10:45:12.774303534 +0300
--- to/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGameInvite.smali 2019-04-25 11:23:38.110808685 +0300
***************
*** 610,616 ****
.line 106
new-instance v1, Ljava/lang/StringBuilder;
! const-string v6, "https://cdn.discordapp.com/app-icons/"
invoke-direct {v1, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
--- 610,616 ----
.line 106
new-instance v1, Ljava/lang/StringBuilder;
! const-string v6, "https://dev.litecord.top/app-icons/"
invoke-direct {v1, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
diff -crB from/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGift.smali to/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGift.smali
*** from/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGift.smali 2019-04-25 10:45:12.784303583 +0300
--- to/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGift.smali 2019-04-25 11:23:38.110808685 +0300
***************
*** 1042,1048 ****
:goto_3
sget-object v10, Lcom/discord/utilities/icon/IconUtils;->INSTANCE:Lcom/discord/utilities/icon/IconUtils;
! const-string v11, "https://cdn.discordapp.com"
.line 116
invoke-virtual/range {p1 .. p1}, Lcom/discord/widgets/chat/list/WidgetChatListAdapterItemGift$Model$Resolved;->getGift()Lcom/discord/models/domain/ModelGift;
--- 1042,1048 ----
:goto_3
sget-object v10, Lcom/discord/utilities/icon/IconUtils;->INSTANCE:Lcom/discord/utilities/icon/IconUtils;
! const-string v11, "https://dev.litecord.top"
.line 116
invoke-virtual/range {p1 .. p1}, Lcom/discord/widgets/chat/list/WidgetChatListAdapterItemGift$Model$Resolved;->getGift()Lcom/discord/models/domain/ModelGift;

View file

@ -27,4 +27,5 @@ Conflicts with nozlib as it's included here.
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

1907
patches/mutant/876.patch Normal file

File diff suppressed because it is too large Load diff

View file

@ -35,6 +35,7 @@ Various scripts are provided to help building of custom patches easier.
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6
#### Disclaimer #### Disclaimer

View file

@ -0,0 +1,14 @@
diff -crB from/AndroidManifest.xml to/AndroidManifest.xml
*** from/AndroidManifest.xml 2019-04-25 11:23:30.924102688 +0300
--- to/AndroidManifest.xml 2019-04-25 11:23:36.224131694 +0300
***************
*** 1,4 ****
! <?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="28" android:compileSdkVersionCodename="9" android:installLocation="auto" package="com.discord" platformBuildVersionCode="28" platformBuildVersionName="9">
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.faketouch" android:required="false"/>
--- 1,4 ----
! <?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="28" android:compileSdkVersionCodename="9" android:installLocation="auto" package="com.discord" platformBuildVersionCode="876" platformBuildVersionName="8.7.6">
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.faketouch" android:required="false"/>

View file

@ -0,0 +1,18 @@
diff -crB -x dist -x build com.discord-835-base/res/layout/widget_chat_list_adapter_item_blocked.xml com.discord-835/res/layout/widget_chat_list_adapter_item_blocked.xml
*** com.discord-835-base/res/layout/widget_chat_list_adapter_item_blocked.xml 2019-01-25 10:57:34.359248256 +0300
--- com.discord-835/res/layout/widget_chat_list_adapter_item_blocked.xml 2019-01-27 00:08:22.929085528 +0300
***************
*** 1,5 ****
<?xml version="1.0" encoding="utf-8"?>
! <RelativeLayout android:background="?selectableItemBackground" android:paddingLeft="@dimen/chat_cell_horizontal_spacing_padding" android:paddingTop="@dimen/chat_cell_vertical_spacing_padding" android:paddingRight="@dimen/chat_cell_horizontal_spacing_padding" android:paddingBottom="@dimen/chat_cell_vertical_spacing_padding" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/chat_cell_horizontal_spacing_margin" android:layout_marginRight="@dimen/chat_cell_horizontal_spacing_margin"
xmlns:android="http://schemas.android.com/apk/res/android">
! <TextView android:textSize="11.0sp" android:textColor="?theme_chat_blocked_text" android:gravity="center" android:id="@id/chat_list_adapter_item_blocked" android:background="?theme_chat_blocked_bg" android:paddingTop="7.5dip" android:paddingBottom="7.5dip" android:layout_width="fill_parent" style="@style/UiKit.TextView" />
</RelativeLayout>
\ No newline at end of file
--- 1,5 ----
<?xml version="1.0" encoding="utf-8"?>
! <RelativeLayout android:background="?selectableItemBackground" android:paddingLeft="0px" android:paddingTop="0px" android:paddingRight="0px" android:paddingBottom="@dimen/chat_cell_vertical_spacing_padding" android:layout_width="0px" android:layout_height="0px" android:layout_marginLeft="0px" android:layout_marginRight="@dimen/chat_cell_horizontal_spacing_margin"
xmlns:android="http://schemas.android.com/apk/res/android">
! <TextView android:textSize="0sp" android:textColor="?theme_chat_blocked_text" android:gravity="center" android:id="@id/chat_list_adapter_item_blocked" android:background="?theme_chat_blocked_bg" android:paddingTop="0dip" android:paddingBottom="0dip" android:layout_width="fill_parent" style="@style/UiKit.TextView" />
</RelativeLayout>
\ No newline at end of file

View file

@ -18,4 +18,5 @@ This patch completely hides the "# Blocked Message(s)" thing.
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

102
patches/nonearby/876.patch Normal file
View file

@ -0,0 +1,102 @@
diff -crB -x dist -x build com.discord-856-base/smali/com/discord/widgets/friends/NearbyManager.smali com.discord-856/smali/com/discord/widgets/friends/NearbyManager.smali
*** com.discord-856-base/smali/com/discord/widgets/friends/NearbyManager.smali 2019-03-08 14:14:53.817767946 +0300
--- com.discord-856/smali/com/discord/widgets/friends/NearbyManager.smali 2019-03-08 15:10:52.474561568 +0300
***************
*** 440,512 ****
# virtual methods
.method public final activateNearby()V
! .locals 9
!
! .line 58
! iget-object v0, p0, Lcom/discord/widgets/friends/NearbyManager;->messagesClient:Lcom/google/android/gms/nearby/messages/MessagesClient;
!
! if-nez v0, :cond_0
!
! return-void
!
! .line 59
! :cond_0
! iget-object v1, p0, Lcom/discord/widgets/friends/NearbyManager;->outboundMessage:Lcom/google/android/gms/nearby/messages/Message;
!
! if-nez v1, :cond_1
!
! return-void
!
! .line 60
! :cond_1
! iget-object v2, p0, Lcom/discord/widgets/friends/NearbyManager;->messagePublishOptions:Lcom/google/android/gms/nearby/messages/PublishOptions;
!
! if-nez v2, :cond_2
!
! return-void
!
! .line 61
! :cond_2
! iget-object v3, p0, Lcom/discord/widgets/friends/NearbyManager;->messageListener:Lcom/google/android/gms/nearby/messages/MessageListener;
!
! if-nez v3, :cond_3
!
! return-void
!
! .line 62
! :cond_3
! iget-object v4, p0, Lcom/discord/widgets/friends/NearbyManager;->subscribeOptions:Lcom/google/android/gms/nearby/messages/SubscribeOptions;
!
! if-nez v4, :cond_4
!
! return-void
!
! .line 64
! :cond_4
! iget-object v5, p0, Lcom/discord/widgets/friends/NearbyManager;->nearbyStateSubject:Lrx/subjects/BehaviorSubject;
!
! new-instance v6, Lcom/discord/widgets/friends/NearbyManager$NearbyState$Connected;
!
! new-instance v7, Ljava/util/HashSet;
!
! iget-object v8, p0, Lcom/discord/widgets/friends/NearbyManager;->nearbyUserIds:Ljava/util/HashSet;
!
! check-cast v8, Ljava/util/Collection;
!
! invoke-direct {v7, v8}, Ljava/util/HashSet;-><init>(Ljava/util/Collection;)V
!
! check-cast v7, Ljava/util/Set;
!
! invoke-direct {v6, v7}, Lcom/discord/widgets/friends/NearbyManager$NearbyState$Connected;-><init>(Ljava/util/Set;)V
!
! invoke-virtual {v5, v6}, Lrx/subjects/BehaviorSubject;->onNext(Ljava/lang/Object;)V
!
! .line 66
! invoke-virtual {v0, v1, v2}, Lcom/google/android/gms/nearby/messages/MessagesClient;->a(Lcom/google/android/gms/nearby/messages/Message;Lcom/google/android/gms/nearby/messages/PublishOptions;)Lcom/google/android/gms/tasks/h;
!
! .line 67
! invoke-virtual {v0, v3, v4}, Lcom/google/android/gms/nearby/messages/MessagesClient;->a(Lcom/google/android/gms/nearby/messages/MessageListener;Lcom/google/android/gms/nearby/messages/SubscribeOptions;)Lcom/google/android/gms/tasks/h;
!
return-void
.end method
--- 440,446 ----
# virtual methods
.method public final activateNearby()V
! .locals 0
return-void
.end method
***************
*** 605,616 ****
.method public final initialize(J)V
.locals 0
-
- .line 34
- invoke-direct {p0, p1, p2}, Lcom/discord/widgets/friends/NearbyManager;->setupBroadcaster(J)V
-
- .line 35
- invoke-direct {p0}, Lcom/discord/widgets/friends/NearbyManager;->setupListener()V
-
return-void
.end method
--- 539,543 ----

View file

@ -21,4 +21,5 @@ This patch nulls a bunch of nearby friends features for privacy.
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

View file

@ -0,0 +1,53 @@
diff -crB from/smali/com/discord/widgets/user/WidgetUserProfileStrip.smali to/smali/com/discord/widgets/user/WidgetUserProfileStrip.smali
*** from/smali/com/discord/widgets/user/WidgetUserProfileStrip.smali 2019-04-25 10:45:13.110971859 +0300
--- to/smali/com/discord/widgets/user/WidgetUserProfileStrip.smali 2019-04-25 11:23:49.677538651 +0300
***************
*** 434,448 ****
move-result-object v2
! invoke-virtual {p1}, Lcom/discord/widgets/user/WidgetUserProfileStrip$Model;->getUser()Lcom/discord/models/domain/ModelUser;
!
! move-result-object v3
!
! invoke-virtual {v3}, Lcom/discord/models/domain/ModelUser;->getUsername()Ljava/lang/String;
!
! move-result-object v3
!
! check-cast v3, Ljava/lang/CharSequence;
invoke-virtual {v2, v3}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
--- 434,440 ----
move-result-object v2
! const-string v3, ""
invoke-virtual {v2, v3}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
***************
*** 451,465 ****
move-result-object v2
! invoke-virtual {p1}, Lcom/discord/widgets/user/WidgetUserProfileStrip$Model;->getUser()Lcom/discord/models/domain/ModelUser;
!
! move-result-object p1
!
! invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->getDiscriminatorWithPadding()Ljava/lang/String;
!
! move-result-object p1
!
! check-cast p1, Ljava/lang/CharSequence;
invoke-virtual {v2, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
--- 443,449 ----
move-result-object v2
! const-string p1, ""
invoke-virtual {v2, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V

View file

@ -16,4 +16,5 @@ This patch removes the "profile strip" from the left side menu, helping remove P
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

View file

@ -0,0 +1,64 @@
diff -crB from/smali/com/discord/models/domain/ModelMessageEmbed.smali to/smali/com/discord/models/domain/ModelMessageEmbed.smali
*** from/smali/com/discord/models/domain/ModelMessageEmbed.smali 2019-04-25 10:45:12.014299791 +0300
--- to/smali/com/discord/models/domain/ModelMessageEmbed.smali 2019-04-25 11:23:41.790828824 +0300
***************
*** 2007,2036 ****
.end method
.method public isSpoilerAttachment()Z
! .locals 2
!
! .line 140
! invoke-virtual {p0}, Lcom/discord/models/domain/ModelMessageEmbed;->isAttachment()Z
!
! move-result v0
!
! if-eqz v0, :cond_0
!
! iget-object v0, p0, Lcom/discord/models/domain/ModelMessageEmbed;->title:Ljava/lang/String;
!
! const-string v1, "SPOILER_"
!
! invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
!
! move-result v0
!
! if-eqz v0, :cond_0
!
! const/4 v0, 0x1
!
! return v0
!
! :cond_0
const/4 v0, 0x0
return v0
--- 2007,2013 ----
.end method
.method public isSpoilerAttachment()Z
! .locals 0
const/4 v0, 0x0
return v0
diff -crB from/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali to/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali
*** from/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali 2019-04-25 10:45:12.547635751 +0300
--- to/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali 2019-04-25 11:23:41.790828824 +0300
***************
*** 211,218 ****
.method public final isRevealed()Z
.locals 1
! .line 23
! iget-boolean v0, p0, Lcom/discord/utilities/textprocessing/node/SpoilerNode;->isRevealed:Z
return v0
.end method
--- 211,217 ----
.method public final isRevealed()Z
.locals 1
! const/4 v0, 0x1
return v0
.end method

View file

@ -18,4 +18,5 @@ I personally won't be using it as I like to use them as CWs, but I do acknowledg
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

3063
patches/notrack/876.patch Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,19 @@
diff -crB -x dist -x build com.discord-843-base/smali/com/discord/widgets/chat/input/WidgetChatInputEditText$1.smali com.discord-843/smali/com/discord/widgets/chat/input/WidgetChatInputEditText$1.smali
*** com.discord-843-base/smali/com/discord/widgets/chat/input/WidgetChatInputEditText$1.smali 2019-02-06 23:27:50.203663875 +0300
--- com.discord-843/smali/com/discord/widgets/chat/input/WidgetChatInputEditText$1.smali 2019-02-06 23:50:23.936732869 +0300
***************
*** 129,140 ****
move-result-object p1
- iget-object v0, p0, Lcom/discord/widgets/chat/input/WidgetChatInputEditText$1;->this$0:Lcom/discord/widgets/chat/input/WidgetChatInputEditText;
-
- iget-wide v0, v0, Lcom/discord/widgets/chat/input/WidgetChatInputEditText;->channelId:J
-
- invoke-virtual {p1, v0, v1}, Lcom/discord/stores/StoreUserTyping;->setUserTyping(J)V
-
:cond_1
return-void
.end method
--- 129,134 ----

View file

@ -17,4 +17,5 @@ This patch disables the typing event.
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

34
patches/nozlib/876.patch Normal file
View file

@ -0,0 +1,34 @@
diff -crB from/smali/com/discord/gateway/GatewaySocket.smali to/smali/com/discord/gateway/GatewaySocket.smali
*** from/smali/com/discord/gateway/GatewaySocket.smali 2019-03-08 15:11:35.438157262 +0300
--- to/smali/com/discord/gateway/GatewaySocket.smali 2019-03-08 16:16:06.511701594 +0300
***************
*** 1050,1056 ****
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
! const-string p1, "/?encoding=json&v=6&compress=zlib-stream"
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
--- 1050,1056 ----
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
! const-string p1, "/?encoding=json&v=6"
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
diff -crB from/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali to/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali
*** from/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali 2019-03-08 15:11:35.438157262 +0300
--- to/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali 2019-03-08 16:16:06.511701594 +0300
***************
*** 59,64 ****
--- 59,66 ----
const/4 v0, 0x0
+ const/4 p3, 0x0
+
.line 27
invoke-direct {p0, v0}, Lcom/discord/gateway/io/OutgoingPayload;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V

View file

@ -20,4 +20,5 @@ Conflicts with litecord patch.
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

View file

@ -26,4 +26,5 @@ Conflicts with experiments.
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

191
patches/smalltime/876.patch Normal file
View file

@ -0,0 +1,191 @@
diff -crB -x dist -x build com.discord-836-testing/smali_classes2/com/miguelgaeta/simple_time/SimpleTime.smali com.discord-836/smali_classes2/com/miguelgaeta/simple_time/SimpleTime.smali
*** com.discord-836-testing/smali_classes2/com/miguelgaeta/simple_time/SimpleTime.smali 2019-01-31 10:40:04.989283867 +0300
--- com.discord-836/smali_classes2/com/miguelgaeta/simple_time/SimpleTime.smali 2019-01-31 10:53:44.476028781 +0300
***************
*** 247,419 ****
.end method
.method public toReadableTimeString(Ljava/lang/Long;)Ljava/lang/String;
! .locals 6
!
! .line 126
! invoke-virtual {p0}, Lcom/miguelgaeta/simple_time/SimpleTime;->currentTimeMillis()J
!
! move-result-wide v0
!
! invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
!
! move-result-object v0
!
! invoke-virtual {p0, v0}, Lcom/miguelgaeta/simple_time/SimpleTime;->toCalendar(Ljava/lang/Long;)Ljava/util/Calendar;
!
! move-result-object v0
!
! const/4 v1, 0x0
!
! const/16 v2, 0xb
!
! .line 128
! invoke-virtual {v0, v2, v1}, Ljava/util/Calendar;->set(II)V
!
! const/16 v2, 0xc
!
! .line 129
! invoke-virtual {v0, v2, v1}, Ljava/util/Calendar;->set(II)V
!
! const/16 v2, 0xd
!
! .line 130
! invoke-virtual {v0, v2, v1}, Ljava/util/Calendar;->set(II)V
!
! const/16 v2, 0xe
!
! .line 131
! invoke-virtual {v0, v2, v1}, Ljava/util/Calendar;->set(II)V
!
! .line 133
! iget-object v1, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->locale:Ljava/util/Locale;
!
! invoke-virtual {v1}, Ljava/util/Locale;->getLanguage()Ljava/lang/String;
!
! move-result-object v1
!
! const-string v2, "en"
!
! invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
!
! move-result v1
!
! if-nez v1, :cond_1
!
! .line 136
! invoke-virtual {p1}, Ljava/lang/Long;->longValue()J
!
! move-result-wide v1
!
! invoke-virtual {v0}, Ljava/util/Calendar;->getTimeInMillis()J
!
! move-result-wide v3
!
! cmp-long v0, v1, v3
!
! if-lez v0, :cond_0
!
! .line 137
iget-object v0, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterTime:Ljava/text/DateFormat;
invoke-virtual {v0, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String;
- move-result-object p1
-
- return-object p1
-
- .line 139
- :cond_0
- iget-object v0, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterDateTime:Ljava/text/DateFormat;
-
- invoke-virtual {v0, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String;
-
- move-result-object p1
-
- return-object p1
-
- .line 143
- :cond_1
- invoke-virtual {p1}, Ljava/lang/Long;->longValue()J
-
- move-result-wide v1
-
- invoke-virtual {v0}, Ljava/util/Calendar;->getTimeInMillis()J
-
- move-result-wide v3
-
- cmp-long v5, v1, v3
-
- if-lez v5, :cond_2
-
- .line 144
- new-instance v0, Ljava/lang/StringBuilder;
-
- const-string v1, "Today at "
-
- invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
-
- iget-object v1, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterTime:Ljava/text/DateFormat;
-
- invoke-virtual {v1, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String;
-
- move-result-object p1
-
- invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
-
- invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
-
- move-result-object p1
-
- return-object p1
-
- :cond_2
- const/4 v1, 0x5
-
- const/4 v2, -0x1
-
- .line 147
- invoke-virtual {v0, v1, v2}, Ljava/util/Calendar;->add(II)V
-
- .line 149
- invoke-virtual {p1}, Ljava/lang/Long;->longValue()J
-
- move-result-wide v1
-
- invoke-virtual {v0}, Ljava/util/Calendar;->getTimeInMillis()J
-
- move-result-wide v3
-
- cmp-long v0, v1, v3
-
- if-lez v0, :cond_3
-
- .line 150
- new-instance v0, Ljava/lang/StringBuilder;
-
- const-string v1, "Yesterday at "
-
- invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
-
- iget-object v1, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterTime:Ljava/text/DateFormat;
-
- invoke-virtual {v1, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String;
-
- move-result-object p1
-
- invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
-
- invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
-
- move-result-object p1
-
- return-object p1
-
- .line 153
- :cond_3
- iget-object v0, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterDateTime:Ljava/text/DateFormat;
-
- invoke-virtual {v0, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String;
-
move-result-object p1
return-object p1
--- 247,257 ----
.end method
.method public toReadableTimeString(Ljava/lang/Long;)Ljava/lang/String;
! .locals 1
iget-object v0, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterTime:Ljava/text/DateFormat;
invoke-virtual {v0, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
return-object p1

View file

@ -18,4 +18,5 @@ This patch replaces the long time string with just a simple time string. This is
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

View file

@ -0,0 +1,21 @@
diff -crB from/res/values/styles.xml to/res/values/styles.xml
*** from/res/values/styles.xml 2019-04-25 10:45:10.484292254 +0300
--- to/res/values/styles.xml 2019-04-25 11:23:47.687527761 +0300
***************
*** 833,839 ****
<item name="actualImageScaleType">fitCenter</item>
<item name="placeholderImage">@drawable/asset_default_avatar_32dp</item>
<item name="placeholderImageScaleType">fitCenter</item>
! <item name="roundAsCircle">true</item>
</style>
<style name="Avatar.Chat" parent="@style/Avatar.Large">
<item name="android:layout_width">@dimen/avatar_size_chat</item>
--- 833,840 ----
<item name="actualImageScaleType">fitCenter</item>
<item name="placeholderImage">@drawable/asset_default_avatar_32dp</item>
<item name="placeholderImageScaleType">fitCenter</item>
! <item name="roundAsCircle">false</item>
! <item name="roundedCornerRadius">3dp</item>
</style>
<style name="Avatar.Chat" parent="@style/Avatar.Large">
<item name="android:layout_width">@dimen/avatar_size_chat</item>

View file

@ -20,4 +20,5 @@ A very small amount of rounding is applied to make it look a little better.
- 8.5.4 - 8.5.4
- 8.5.5 - 8.5.5
- 8.5.6 - 8.5.6
- 8.7.6

View file

@ -7,8 +7,7 @@ import datetime
import shutil import shutil
# Example invocation: # Example invocation:
# python3 patchport.py 839 8.3.9g # python3 patchport.py 839 8.3.9g /home/ave/apks/com.discord-841/ /home/ave/cutthecordrepo/
# /home/ave/apks/com.discord-841/ /home/ave/cutthecordrepo/
from_versioncode = sys.argv[1] from_versioncode = sys.argv[1]
from_versionname = sys.argv[2] from_versionname = sys.argv[2]
@ -34,6 +33,12 @@ def modify_patch(patch_name, patch_path):
return patch_content return patch_content
def apply_patch(patch_contents):
subprocess.run("patch -p1 --no-backup-if-mismatch --force",
shell=True, input=patch_contents, text=True,
cwd=apk_folder, capture_output=True)
def fix_offset(patch_contents): def fix_offset(patch_contents):
# OH GOD OH FUCK # OH GOD OH FUCK
shutil.rmtree(tmp_folder, ignore_errors=True) shutil.rmtree(tmp_folder, ignore_errors=True)
@ -49,8 +54,39 @@ def fix_offset(patch_contents):
return patch_out return patch_out
re_versioncode = re.compile(r'platformBuildVersionCode="([0-9]+)"') def make_necessary(version_name, version_code):
re_versionname = re.compile(r'platformBuildVersionName="([0-9a-z.]+)"') # OH GOD OH FUCK
shutil.rmtree(tmp_folder, ignore_errors=True)
shutil.copytree(apk_folder, tmp_folder)
# Set version code and name
# Due to https://github.com/iBotPeaches/Apktool/issues/2046
# Code based on https://stackoverflow.com/a/4128192/3286892
with open(os.path.join(tmp_folder, "AndroidManifest.xml")) as fin:
filec = fin.read()
incorrect_versioncode = re_versioncode_xml.findall(filec)[0]
filec = filec.replace(incorrect_versioncode,
f'platformBuildVersionCode="{to_versioncode}"')
incorrect_versionname = re_versionname_xml.findall(filec)[0]
filec = filec.replace(incorrect_versionname,
f'platformBuildVersionName="{to_versionname}"')
with open(os.path.join(tmp_folder, "AndroidManifest.xml"), "w") as fout:
fout.write(filec)
out = subprocess.run(f"diff -crB {apk_folder} {tmp_folder}",
shell=True, text=True,
cwd=tmp_folder, capture_output=True)
shutil.rmtree(tmp_folder, ignore_errors=True)
patch_out = out.stdout.replace(apk_folder, "from").replace(tmp_folder, "to")
return patch_out
re_versioncode_xml = re.compile(r'(platformBuildVersionCode="[0-9]+")')
re_versionname_xml = re.compile(r'(platformBuildVersionName="[0-9a-z.]+")')
re_versioncode_yml = re.compile(r'versionCode: \'([0-9]+)\'')
re_versionname_yml = re.compile(r'versionName: ([0-9a-z.]+)')
re_releasedate = re.compile(r'released on ([0-9]{4}-[0-9]{2}-[0-9]{2})') re_releasedate = re.compile(r'released on ([0-9]{4}-[0-9]{2}-[0-9]{2})')
re_crashlytics = re.compile(r'com\.crashlytics\.android\.build_id">([a-z0-9]' re_crashlytics = re.compile(r'com\.crashlytics\.android\.build_id">([a-z0-9]'
r'{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-' r'{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-'
@ -58,10 +94,10 @@ re_crashlytics = re.compile(r'com\.crashlytics\.android\.build_id">([a-z0-9]'
# Get version code and name # Get version code and name
with open(os.path.join(apk_folder, "AndroidManifest.xml")) as f: with open(os.path.join(apk_folder, "apktool.yml")) as f:
file_contents = f.read() file_contents = f.read()
to_versioncode = re_versioncode.findall(file_contents)[0] to_versioncode = re_versioncode_yml.findall(file_contents)[0]
to_versionname = re_versionname.findall(file_contents)[0] to_versionname = re_versionname_yml.findall(file_contents)[0]
# Get crashlytics build ID # Get crashlytics build ID
with open(os.path.join(apk_folder, "res", "values", "strings.xml")) as f: with open(os.path.join(apk_folder, "res", "values", "strings.xml")) as f:
@ -79,13 +115,17 @@ for patch in os.listdir(os.path.join(cutthecord_folder, "patches")):
readme_path = os.path.join(cutthecord_folder, "patches", patch, "README.md") readme_path = os.path.join(cutthecord_folder, "patches", patch, "README.md")
# Check if patch exists for from_version, if it doesn't, warn user # Check if patch exists for from_version, if it doesn't, warn user
if not os.path.isfile(patch_path): if not os.path.isfile(patch_path) and patch not in ["necessary"]:
# Don't warn on instructional patches # Don't warn on instructional patches
if patch not in ["customfont", "customring", if patch not in ["customfont", "customring",
"bettertm", "bettertmlight"]: "bettertm", "bettertmlight"]:
print(f"SKIPPED: No {from_versionname} version found for {patch}.") print(f"SKIPPED: No {from_versionname} version found for {patch}.")
continue continue
# Create necessary instead of porting it.
if patch == "necessary":
patch_contents = make_necessary(to_versioncode, to_versionname)
else:
# Get a modified version of the patch # Get a modified version of the patch
patch_contents = modify_patch(patch, patch_path) patch_contents = modify_patch(patch, patch_path)
@ -106,6 +146,10 @@ for patch in os.listdir(os.path.join(cutthecord_folder, "patches")):
if debug: if debug:
print(out.stdout) print(out.stdout)
# Apply patch to main APK folder too
if patch in ["necessary"]:
apply_patch(patch_contents)
# Add supported version to readme of that patch, hacky # Add supported version to readme of that patch, hacky
# https://stackoverflow.com/a/35130508/3286892 # https://stackoverflow.com/a/35130508/3286892
with open(readme_path, 'r') as f: with open(readme_path, 'r') as f: