ninjaman494 / hanji-android-app Goto Github PK
View Code? Open in Web Editor NEWAndroid app that uses the KoreanConjugator server to conjugate a given word into multiple forms.
License: Apache License 2.0
Android app that uses the KoreanConjugator server to conjugate a given word into multiple forms.
License: Apache License 2.0
Show a dialog on each new update that lists changes made. This dialog would pop-up when the user opens the new update for the first time.
We got a policy violation notification from Admob:
ADS AND CONTENT OVERLAP: As stated in our Program policies, publishers are not permitted to alter the behavior of Google ads in any way. This includes placing ads so that they cover any part of the site or app content or implementing parts of a webpage to cover any portion of the ads. If your site has drop-down menus they are not permitted to cover the ads.
This violation must be fixed by Dec. 9th, or else they will disable our ads. Most likely, this violation is caused by the small banner ad on the search results page, because it can sometimes cover up search results. An enhancement we've been wanting to do for a while is to turn that ad into a card that shows up in the results list, which should also fix this violation.
Show a history of recent searches in MainActivity
, under the Word of the Day card.
The favorites card isn't shown if there aren't any favorites, which makes the Conjugations Activity inaccessible. Instead, the card should be shown with a placeholder when the user has no favorites.
After making conjugation text selectable in #27, you can no longer click on them to see conjugation info. Copy and paste functionality is pretty important, so we can't just undo that PR.
Instrumented tests don't work at all, and I have no idea why or when they stopped working ๐ญ
When implementing #35 , I forgot to the add the library I used to the Acknowledgements section. This library should be added to info_strings.xml
After closing an activity (pressing back, closing app, etc.), a fragment on this closed activity may try to open, which causes an Illegal State Exception. The most common scenario is when a user search comes up empty and they close the app before the dialog displays.
All dialogs in the app should first check if they're allowed to open before opening. This could be handled by a custom open
method.
Reports:
In FavoritesActivity
, the addFavoriteFragment
is only created once the conjugation names are fetched. If the add favorite button is clicked while the query is loading or has failed, a Null Pointer Exception will occur. This button should be disabled until the query is completed.
Clicking on the Add Suggestion button while Display Activity is still loading the entry will cause a null pointer exception because entry
is null.
Null pointer exception on example.sentence()
in Example Adapter. We should also start logging what entry the user's looking at in Display Activity to make debugging easier. It's possible there's an entry with malformed example
This is a very specific bug where, if onBackPressed
is called while the app in the background, an IllegalStateException occurs. This happens because the Error Dialog's onDismissed listener called onBackPressed
, it should be updated to finish
. Other activities should also be updated accordingly.
A lot of user suggestions are in the wrong language (i.e. English antonyms/synonyms, Spanish for example translation, etc.). We should add hints to the text fields indicating what language fields should be in.
In 1.0, Hanji would provide conjugations for a word even if it wasn't in the dictionary. 2.0 should have this same functionality.
A note should be added in the response explaining how it was conjugated.
Part of Speech will have to be deduced/assumed somehow
Edit: A better solution would be to create a separate flow for conjugationing without dictionary info, see comments
In DisplayActivity
, entry, conjugations, and examples are done as three separate queries. Entry and examples are done in parallel, and then conjugations is done after the entry request is done.
It appears that the examples are already being fetched in the entry query, so the examples query is actually redundant and should be removed.
Expanding and collapsing the definitions should be animated. The existing layout should have two separate lists.
After updating to a MaterialComponents
theme, the default dialog buttons color is set to colorPrimary
, but we want it to be the accent color. The default AppTheme
should be updated so it sets dialog buttons to the accent color using colorSecondary
When you go back to the search results (press back or home), the extended bar is out. This is correct when you're at the top of the results, but not when it returns you to the middle of them.
Possible solutions are to scroll to the top or change how extended bar handles back/home
Enable long press to copy words to clipboard
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates are currently rate-limited. Click on a checkbox below to force their creation now.
These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.
gradle
, org.robolectric:shadows-httpclient
, org.robolectric:robolectric
, org.mockito:mockito-core
, junit:junit
, com.android.billingclient:billing
, io.reactivex.rxjava2:rxandroid
, com.mikepenz:aboutlibraries
, com.codemybrainsout.rating:ratingdialog
, com.google.guava:guava
, com.google.code.gson:gson
, com.google.android.gms:play-services-ads
, com.google.firebase:firebase-bom
, com.google.android.material:material
, androidx.preference:preference
, androidx.recyclerview:recyclerview
, androidx.constraintlayout:constraintlayout
, androidx.appcompat:appcompat
, com.google.firebase:firebase-crashlytics-gradle
, org.jacoco:org.jacoco.core
, com.google.gms:google-services
, jacoco
)These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
androidx.test:orchestrator
, androidx.test.ext:junit
, androidx.test.espresso:espresso-contrib
, androidx.test.espresso:espresso-core
, androidx.test.espresso:espresso-intents
, androidx.test:rules
, androidx.test:runner
, androidx.test:core
)com.apollographql.apollo:apollo-rx2-support
, com.apollographql.apollo:apollo-http-cache
, com.apollographql.apollo:apollo-runtime
, com.apollographql.apollo:apollo-gradle-plugin
)com.squareup.okhttp3:mockwebserver
, com.squareup.okhttp3:okhttp
)org.rm3l:maoni-common
, org.rm3l:maoni-email
, org.rm3l:maoni
)These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
.github/workflows/instrumentedTest.yml
actions/checkout v2
reactivecircus/android-emulator-runner v2
actions/upload-artifact v2
.github/workflows/unitTest.yml
actions/checkout v2
actions/setup-java v2
asadmansr/android-test-report-action v1.2.0
gradle.properties
settings.gradle
build.gradle
com.android.tools.build:gradle 3.6.4
com.google.gms:google-services 4.3.3
com.apollographql.apollo:apollo-gradle-plugin 2.5.11
org.jacoco:org.jacoco.core 0.8.2
com.google.firebase:firebase-crashlytics-gradle 2.3.0
app/build.gradle
jacoco 0.8.2
com.google.code.findbugs:jsr305 3.0.2
androidx.appcompat:appcompat 1.2.0
androidx.constraintlayout:constraintlayout 2.0.4
androidx.legacy:legacy-support-v4 1.0.0
androidx.multidex:multidex 2.0.1
androidx.cardview:cardview 1.0.0
androidx.recyclerview:recyclerview 1.1.0
androidx.preference:preference 1.1.1
com.google.android.material:material 1.2.1
org.jetbrains:annotations 22.0.0
com.github.frankiesardo:linearlistview 1.0.1
com.codemybrainsout.onboarding:onboarder 1.0.4
com.github.MFlisar:changelog 1.1.7
com.google.firebase:firebase-bom 29.0.0
com.google.android.gms:play-services-ads 20.2.0
com.google.code.gson:gson 2.8.5
com.google.guava:guava 30.1.1-android
com.codemybrainsout.rating:ratingdialog 1.0.8
com.github.eggheadgames:android-about-box 2.0.1
com.mikepenz:aboutlibraries 8.3.1
org.rm3l:maoni 9.1.0
org.rm3l:maoni-email 9.1.0
org.rm3l:maoni-common 9.1.0
com.github.pschroen:slack-api-android c66cc8d997
com.apollographql.apollo:apollo-runtime 2.5.11
com.apollographql.apollo:apollo-http-cache 2.5.11
com.apollographql.apollo:apollo-rx2-support 2.5.11
io.reactivex.rxjava2:rxandroid 2.0.1
com.android.billingclient:billing 4.0.0
androidx.test.espresso:espresso-contrib 3.4.0
com.squareup.okhttp3:okhttp 4.9.1
junit:junit 4.13
org.mockito:mockito-core 3.11.2
org.robolectric:robolectric 4.2.1
androidx.test:core 1.4.0
androidx.test:rules 1.4.0
androidx.test.espresso:espresso-intents 3.4.0
androidx.test.ext:junit 1.1.3
org.robolectric:shadows-httpclient 4.6.1
com.squareup.okhttp3:mockwebserver 4.9.1
androidx.test:runner 1.4.0
androidx.test:rules 1.4.0
androidx.test.espresso:espresso-intents 3.4.0
androidx.test.espresso:espresso-core 3.4.0
androidx.test.espresso:espresso-contrib 3.4.0
androidx.test.ext:junit 1.1.3
com.squareup.okhttp3:mockwebserver 4.9.1
androidx.test:orchestrator 1.4.0
gradle/wrapper/gradle-wrapper.properties
gradle 6.1.1
Apollo Android recently added support for batch querying, which might be useful on parts of the app where multiple requests are sent out at once (i.e. DisplayActivity). It's worth trying out this new feature to see if it improves performance.
The Feedback Activity, created by Maoni, could definitely used some UI improvements:
Even if the instrumented tests aren't working, the unit tests could definitely be automated
Originally, I thought this exception was happening because the OS force shut down the app. However, it's strange that this error is happening so often, so I think further investigation is warranted.
There should be one for each activity, but at the moment we only have tests for Conjugation and ConjInfo activities
The JSON format for favorites changed with 2.0, and any old 1.0 favorites were cleared when a user installed the 2.0 updated. However, it appears that some users still have old favorites on their phone, causing the app to crash with a serialization error.
We should also log shared preferences in Crashlytics reports to help use diagnose future issues.
The app uses conjugation names to fetch only the favorited conjugations from the server. This pretty efficient, but it ignores the honorific flag. The flag + conjugation name needs to be sent.
Any feedback with Korean characters in it sent through the "Report a Bug" menu shows up in Slack as "????". There seems to be an encoding problem on the Android side, as the Review messages show Korean just fine.
Currently, the extended bar is simply a view in the Relative Layout. This is works well in cases where overlap is needed, but in this activity it opens us up to a bunch of bugs. Specifically, it can cause the bar to go into the wrong state when animating. This can easily by solved by swiping down, but it looks bad. Changing the implementation to a custom Action Bar might fix it, because this functionality is already supported.
com.android.volley.TimeoutError
is an error that occurs when the server takes too long to respond. It's a pretty common error that's usually caused by a bad connection, but there's no specific error message for it. Currently, the generic "something went wrong" message is used. We such should a timeout specific error message so user's know what's going on.
The conjugator option shows up for English searches. It should only show for Korean words ending in ๋ค (we assume that these are verbs/adjectives)
Self explanatory, having a dark mode feature would be cool. About Box and About Libraries already support it, so there actually two activities in Hanji that already have dark mode functionality.
The Word of the Day card has a button that redirects to Display Activity. Clicking on this button while the card is loading causes Display Activity to receive a null id
, which makes sense because it hasn't fetched the entry yet.
The app catches this exception, so it's non-fatal. There were 22 cases of this issue from 9/5 - 10/5
WOD card's button is disabled until it's done loading.
Hanji's minimum api level used to be 16, but we had to raise it to 19 because of this slack library. Since we didn't want to alienate users with older phone, we now have to two versions of the app, one with api 16 and one(the newest version) with api 19. This not ideal, so we should figure out a way to bring the api level back down to 16 while still using the slack-android-api.
Determiner Past is a conjugation that's only available for verbs. If a user has Determiner Past favorited, this will cause a null pointer exception when viewing adjectives because the conjugation doesn't exist.
The reason a fork is being used in the first place was due to a bug in About Box that showed empty cards. This bug was fixed in a pull request, so we should be able to go back to using the official library.
Using the official library should also make it possible to setup Github Actions
NOTE: The latest release tag outlines some things that need to be changed for the latest version to work
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.