Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RTL Support #208

Merged
merged 15 commits into from
Feb 25, 2020
Merged

RTL Support #208

merged 15 commits into from
Feb 25, 2020

Conversation

vbuberen
Copy link
Collaborator

@vbuberen vbuberen commented Jan 25, 2020

📷 Screenshots

Before After
Before After
transactions_list_rtl_before transactions_list_rtl

📄 Context

PR addresses feature request #117
Since Chucker currently has min API 16 as supported, while RTL properties are available from 17, I added all RTL related things into styles in values-v21, which means that RTL works only from Android 5.0 (API 21) and newer.

📝 Changes

  • Closes Better RTL support #117
  • Added tags to define text direction and alignment in styles.xml
  • Replaced TableLayout with ConstrainLayout in TransactionOverviewFragment layout.
  • Added useVectorDrawables = true in build.gradle to avoid PNG generation during builds and use real vectors.
  • Replaced android:src with app:srcCompat to use vector drawable via AndroidX library.
  • Fixed constraints to close Text constraints issue in transactions list #241

📝 How to test

Set Force RTL in Developer options or switch to some RTL locale.

🔮 Next steps

Would like to hear some feedback from real RTL users, who could tell if I did everything right. Since I am not an RTL user, can't claim that it works as it should.

@vbuberen vbuberen added this to the 3.2.0 milestone Jan 25, 2020
@cortinico cortinico added the enhancement New feature or improvement to the library label Jan 26, 2020
@vbuberen
Copy link
Collaborator Author

This PR now closes #241 as well.

@vbuberen vbuberen requested a review from cortinico February 22, 2020 16:36
@vbuberen vbuberen marked this pull request as ready for review February 22, 2020 16:36
@vbuberen
Copy link
Collaborator Author

vbuberen commented Feb 22, 2020

Let's check and merge it. It seems we won't get feedback from the original reporter of this feature request.
Also, the PR has some additional fixes, like fix #241

Finally, due to #227 I updated ids for layouts items to be 100% sure we are not clashing with ids in users projects.

Copy link
Member

@cortinico cortinico left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done some manual testing and it works great! I'm not a RTL expert so I can't really say if it works naturally but overall looks good.

@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.chuckerteam.chucker">
<application>
<application
android:supportsRtl="true">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be avoided. Ideally we should not set a android:supportsRtl in the library as this gets merged in the final manifest. The default value for supportsRtl is false.

Moreover we might break builds for users that have supportsRtl set to false on the host app. See also #121 (comment)

<resources>
<resources xmlns:tools="http://schemas.android.com/tools">

<style name="Chucker.Theme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can I ask you to refactor to have a:

<style name="Chucker.BaseTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">

inside the res/values/styles.xml with all the common theme attributes?

We can then have the Chucker.Theme defined in both values and values-v21 so we don't need to copy over the theme twice.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure. I just thought that we might bump minSDK to 21 pretty soon due to Retrofit updates, etc.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah true, but we don't have a PR pending for that (plus would be a major version bump). I think it's better if we keep the theme clean. Moreover having this setup with a BaseTheme could be handy for future similar scenarios

Comment on lines 35 to 39
<style name="Chucker.TextAppearance.TransactionTitle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:gravity">top</item>
<item name="android:textSize" tools:ignore="SpUsage">16dp</item>
<item name="android:maxLines">2</item>
</style>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this needed?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just left it from original styles. It is used in TransactionActivity and ErrorActivity for toolbar title. Actually, I am against using dps for text sizes here. Will update as well.

@@ -16,6 +16,8 @@ org.gradle.jvmargs=-Xmx1536m
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true

android.useAndroidX=true
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added, because 3.6.0 plugin throws error without it.

@vbuberen
Copy link
Collaborator Author

@cortinico It is updated and ready for a new round of review.

Copy link
Member

@cortinico cortinico left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

Comment on lines +11 to +15

<activity android:name="com.chuckerteam.chucker.internal.ui.transaction.TransactionActivity"
android:theme="@style/Chucker.Theme"
android:parentActivityName="com.chuckerteam.chucker.internal.ui.MainActivity"/>

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: whitespace change here that can be reverted

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I`ve added it for readability.

@vbuberen
Copy link
Collaborator Author

vbuberen commented Feb 25, 2020

Just tested it myself and saw that there is an issue due to supportVectorDrawables = true - Chucker crashes on devices with API 16-19. Will fix it later today. Do not merge, please.

@cortinico cortinico added the ⛔️ do not merge A PR that should not be merged label Feb 25, 2020
@vbuberen
Copy link
Collaborator Author

vbuberen commented Feb 25, 2020

Issues is fixed. In case someone interested in reasons here is the link to the comment in the issue similar to what was seen:
https://stackoverflow.com/a/38999661/7339798

@vbuberen vbuberen removed the ⛔️ do not merge A PR that should not be merged label Feb 25, 2020
@vbuberen vbuberen merged commit ad65dd5 into develop Feb 25, 2020
@vbuberen vbuberen deleted the feature/rtl_support branch February 25, 2020 21:37
@vbuberen vbuberen mentioned this pull request Feb 25, 2020
vbuberen added a commit that referenced this pull request Apr 4, 2020
* Remove scroll flags (#210)

* Fix/gradle properties (#211)

* Allow Gradle parallel build
* Fix version name

* Fix for curl command (#214)

* Fix R8 minification crash on TransactionViewModel creation. (#219)

* Big resources renaming (#216)

* Fix clear action crash when application is dead (#222)

* Fix for crash on Save transaction action (#221)

* Show warning is transaction is null, fix crash in Save action

* Uncomment sample transactions

* Replace mulptiple returning with multiple throw due to detekt issue

* Add message into IOException, update string for request being not ready

* Fix for NPE in NotificationHelper (#223)

* Add additional check fo transaction being not null before getting its notificationText

* Extract transaction item from transactionBuffer

* ViewModel refactoring (#220)

* Update ViewModel dependency, refactor TransactionViewModel
* Dependencies clean up
* Switch to ViewModel on the main screen

* Fix depleting bytes from the response. (#226)

* Use HttpUrl instead of Uri for parsing URL data.
* Do not read image sources directly from the response.
* Simplify gzip logic.
* Move gzip checks from IoUtils to OkHttpUtils.
* Remove unused 'Response.hasBody()' extension.
* Update library/src/main/java/com/chuckerteam/chucker/internal/support/OkHttpUtils.kt

* Revert resource renaming (#227)

* Revert renaming

* Add changelgos for 3.1.2 (#230)

* Add missing  section to release 3.1.1 and 3.1.2 (#232)

* Update Github templates (#235)

* Update templates
* Remove redundant dot
* Remove default `no` from the checkbox

* Switch to platform defined HTTP code constants (#238)

* Add instruction for checkbox selection (#237)

* Fix HttpHeader serialization when obfuscation is enabled (#240)

* Update README (#243)

* Add Action to validate the Gradle Wrapper (#245)

* Gradle to 6.2 (#247)

* Do not refresh transaction when it is not being affected. (#246)

* Do not refresh transaction when it is not being affected.
* Use correct null-aware comparison for HttpTransaction.

* Add switching between encoded and decoded URL formats. (#233)

* Add switching between encoded and decoded URL formats.
* Make URL encoding transaction specific.
* Change test name for upcoming #244 PR.
* Use LiveDataRecord for combineLatest tests.
* Properly switch encoding and decoding URL.
* Show encoding icon only when it is viable.
* Add encoded URL samples to HttpBinClient.
* Avoid using 'this' scoping mechanism for URL.

* Fix typo in feature request comment (#251)

* RTL Support (#208)

* Remove ltr forcing and replace ScrollView in Overview
* Replace Overview layout, add rtl support for it
* Add textDirection and textAlignment property for API 21+
* Fix host textview constraints
* Replace android:src with app:srcCompat
* Update ids for layouts to avoid clashes
* Update Material components to stable
* Remove supportsRTL tag from Manifest, update Gradle plugin
* Styles update
* Remove supportsRTL from library manifest
* Revert usage of supportVectorDrawables to avoid crashes on APIs 16-19 due to notifications icons
* Fix lint issue with vector drawable

* Response search fixes (#256)

* Fix response search to be case insensitive
* Add minimum required symbols
* Fix invalid options menu in response fragment

* Feature/tls info (#252)

* Add UI for TLS info

* Implement logic for retrieving TLS info

* Address code review feedback

* Switch views to ViewBinding (#253)

* Switch to ViewBinding in activities
* Switch to ViewBinding in ErrorsAdapter, add formattedDate field into Throwable models
* Transaction adapter switch to ViewBinding
* Remove variable for formatted date from models
* Switch to ViewBinding in TransactionPayloadAdapter
* Switch to ViewBinding in TransactionPaayload and TransactionOverviewFragments
* Switch list fragments to ViewBinding
* Fix link for tutorial opening
* Rename views
* Address code review feedback
* Hide SSL field if isSSL is null

* Libs update (#260)

* Update tools versions
* JUnit update

* Feature/truth (#258)

* Add Truth, update part of test classes
* Convert other tests to use Truth, fix date parser test
* Add Truth assertions to FormatUtilsTest, fix ktlint issue
* Update assertions to a proper syntax

* Add missing ThrowableViewModel (#257)

* Add Error ViewModel, update title in TransactionActivity in onCreate
* Switch from errors to throwable naming to have a uniform naming style
* Rename toolbar title

* Migrating from Travis to GH Actions (#262)

* Setup GH Actions

* Run only on Linux

* Remove Travis File

* Run only gradlew directly

* Update targetSDK and Kotlin (#264)

* Add stale builds canceller (#265)

* Add filters
* Update Gradle wrapper validation workflow
* Update pre-merge workflow

* Fixed various Lints (#268)

* fixed typos
* fixed KDocs

* Replace Travis badge with GH Actions badge (#269)

* Remove redundant JvmName (#274)

* Fix margins and paddings for payload items (#277)

* Add selective interception. (#279)

* Add selective interception.
* Update README.md.
* Align formatting in README with other points.
* Avoid header name duplication.
* Strip interception header also in the no-op library.

* UX improvements (#275)

* Add icon for non-https transactions
* Update secondary color to be more contrast
* Simplify protocol resources setting

* Add tests to format utils (#281)

* add tests to format utils

* fixes after code review

* formatting fix

Co-authored-by: adammasyk <adam.masyk@programisci.eu>

* format utils test refactor (#285)

* format utils test refactor
* share text test refactor

* Migrate to Kotlin Coroutines (#270)

* Add coroutine as a dependency in build.gradle
* Migrate AsyncTasks to kotlin coroutines
* Migrate executors with the coroutines in repositories

* Multi cast upstream response for Chucker consumption. (#267)

* Multi cast response upstream for Chucker consumption.

* Read buffer prefix before potentially gunzipping it.

* Inform Chucker about unprocessed responses.

* Simplify multi casting logic.

* Move read offset to a variable.

* Inline one-line method.

* Give better control over TeeSource read results.

* Add documentation to TeeSource.

* Close side channel when capacity is exceeded.

Co-authored-by: Volodymyr Buberenko <vbuberen@users.noreply.github.com>

* Remove unnecessary mock method. (#289)

* removed redundant Gson configurations (#290)

* increased test coverage for format utils (#291)

Co-authored-by: Karthik R <karthr@paypal.com>

* added few test cases for json formatting (#295)

* Properly handle unexhausted network responses (#288)

* Handle properly not consumed upstream body.
* Handle IO issues while reading from file.

* Update dependencies (#296)

* Update depencies

* Update OkHttp to 3.12.10

* Handle empty and missing response bodies. (#250)

* Add failing test cases.
* Remove unused const.
* Gzip response body if it was gunzipped.
* Add test cases for regular bodies in Chucker.
* Fix rule formatting.
* Use proper name for application interceptor.
* Return original response downstream.
* Account for no content with gzip encoding.
* Use Truth for Chucker tests.
* Honor empty plaintext bodies.
* Revert changes to HttpBinClient.
* Update library/src/test/java/com/chuckerteam/chucker/ChuckerInterceptorDelegate.kt
* Update library/src/main/java/com/chuckerteam/chucker/internal/support/OkHttpUtils.kt
Co-authored-by: Nicola Corti <corti.nico@gmail.com>
Co-authored-by: Volodymyr Buberenko <vbuberen@users.noreply.github.com>

* Add hasFixed size to RecyclerViews (#297)

* Detekt to 1.7.4 (#299)

* Revert "Add selective interception. (#279)" (#300)

This reverts commit d14ed64.

* Prepare 3.2.0 (#298)

* Update versions info

* Update Changelog

* Fix links and update date

Co-authored-by: Michał Sikora <michalsikora90@gmail.com>
Co-authored-by: Nicola Corti <corti.nico@gmail.com>
Co-authored-by: Sergey Chelombitko <119192+technoir42@users.noreply.github.com>
Co-authored-by: Michał Sikora <me@mehow.io>
Co-authored-by: Hitanshu Dhawan <hitanshudhawan1996@gmail.com>
Co-authored-by: adammasyk <masiol91@gmail.com>
Co-authored-by: adammasyk <adam.masyk@programisci.eu>
Co-authored-by: Nikhil Chaudhari <nikhyl777@gmail.com>
Co-authored-by: karthik rk <karthik.rk18@gmail.com>
Co-authored-by: Karthik R <karthr@paypal.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or improvement to the library
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Text constraints issue in transactions list Better RTL support
2 participants