Giter Site home page Giter Site logo

chatter's People

Contributors

abishekvashok avatar aggarwalpulkit596 avatar ankurg22 avatar arushisinghal avatar arya-ayush avatar championswimmer avatar firefinchdev avatar harshithdwivedi avatar manav-mj avatar rishabhrawatandroid avatar s2606 avatar venomousboxer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chatter's Issues

add issue template for github

There should be an issue template added to the repo for enabling a proper documentation of bugs and updations to the code-base

Enhance Dashboard Activity

Populating the Dashboard Activity would be the next step to go forward.

  • Store user data received from Gitter API, by making a call with access token to the API in shared Preferences.
  • Implement Realm db
  • If on the first use the user is offine it will redirect to NoNetwork Activity
  • Get rooms data and store them in Realm db.
  • Implement Recycler View in Dashboard Activity listing out the rooms and users with number of unread messages and sorted by last taken room time stamp from the Realm db.
  • On clicking a room or user should open a dedicated Activity. [Currently blank].

Difficulty: Hard

CC: @championswimmer @the-dagger

Please add bounty points :)

Add display message support for rooms

Since, we got a rooms fragment which displays all our rooms, we now would need to view messages from them.

  • Add onClick attribute to the dynamically generated views which opens a new fragment.
  • Pass the room id to the other fragment.
  • If network is available try to get new messages and populate the realm table for messages.
  • If network is not available and no messages are there in the realm db, redirect to network connection page.
  • If no messages are in the room even after there is an internet connection, show it to the user.
  • Get the messages from the realm db sorting it with id of the row.
  • Display the messages in a recycler view.

Difficulty: Hard

CC: @championswimmer @the-dagger

Please add bounty points :)

Fix app crash on launch

On first launch, the app crashes with a Unique PrimaryKey exception.
A fix for this is needed.

add pull request template

There should be an issue template added to the repo for enabling a proper documentation of the Pull Request

App crash on startup due to butterknife

Actual Behaviour

App crashes on startup due to ButterKnife.bind(this);

LogCat for the issue

05-15 02:08:30.269 20920-20920/com.codingblocks.chatter E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.codingblocks.chatter, PID: 20920
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.codingblocks.chatter/com.codingblocks.chatter.AuthenticationActivity}: java.lang.IllegalStateException: Required view 'authentication_web_view' with ID 2131230747 for field 'authenticationWebView' was not found. If this view is optional add '@nullable' (fields) or '@optional' (methods) annotation.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.IllegalStateException: Required view 'authentication_web_view' with ID 2131230747 for field 'authenticationWebView' was not found. If this view is optional add '@nullable' (fields) or '@optional' (methods) annotation.
at butterknife.internal.Utils.findRequiredView(Utils.java:92)
at butterknife.internal.Utils.findRequiredViewAsType(Utils.java:104)
at com.codingblocks.chatter.AuthenticationActivity_ViewBinding.(AuthenticationActivity_ViewBinding.java:25)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
at butterknife.ButterKnife.createBinding(ButterKnife.java:199)
at butterknife.ButterKnife.bind(ButterKnife.java:124)
at com.codingblocks.chatter.AuthenticationActivity.onCreate(AuthenticationActivity.java:39)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6119) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

Fix API changes

Issues-

  1. There are many crashes after building the project. Make appropriate changes to revive the app.
  2. Set targetSdk to 27 for latest os and use latest build tools available.

I'm working on this

Show the Room Message with proper layout and display according to the Date

Actual Behaviour

At present, the Room message show without any order means recent message display on top of recycler view and room message has not a proper layout and there is no any mechanism to detect the link in the message.

Expected Behaviour
Room Message must be displayed according to the date and in user message the web link automatically recognize

Steps to reproduce it
Adding the business logic and make a good layout.

LogCat for the issue

No Logcat this is only improvement

Screenshots of the issue

You can see that message are not in proper order which means recent message should be displayed at last.

40550959-3d65a622-6059-11e8-8812-c3703b534711

Expected Bounty

500 After resolving this issue.

Null Pointer Exception in RoomFragment class

Actual Behaviour: The RoomFragment class produce Null pointer exception upon frequent clicking on several lobbies together.

Cause: The fragments get detached from their concerned activity upon frequent traversal, so the call to getActivity() method results in Null pointer exception.

Would you like to work on this issue: Yes.

Messages Not Populating

Actual Behaviour
Messages in message fragment not getting populated
Expected Behaviour

Messages should be populated according to the selected room

Screenshots of the issue

screenshot-1527658077109

Expected Bounty

20

App Crash on Sending Message In RoomFragment

Actual Behaviour
App Crash on Send Message in Room Fragment

LogCat for the issue

05-25 17:45:12.489 14346-14346/com.codingblocks.chatter E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.codingblocks.chatter, PID: 14346
java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction.
at io.realm.internal.Table.throwImmutable(Table.java:979)
at io.realm.internal.Table.checkImmutable(Table.java:827)
at io.realm.internal.UncheckedRow.setString(UncheckedRow.java:236)
at io.realm.MessagesTableRealmProxy.realmSet$uId(MessagesTableRealmProxy.java:164)
at com.codingblocks.chatter.MessagesTable.setUId(MessagesTable.java:30)
at com.codingblocks.chatter.RoomFragment$6$1.run(RoomFragment.java:378)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6798)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Screenshots of the issue

Where-ever possible add a screenshot of the issue.

Expected Bounty

Mention the bounty you expect for the issue (if not tagged in the issue)

Use Architecture Components

Since the current size of the project is small and the app idea has good potential. Only authentication works perfectly right now. It would be great to start using the Architecture components now to increase maintainability, readability and developing experience. Also, follow Repository pattern.
This transformation should be done over multiple pull request step-by-step.

  • Add Room and LiveData library and make the required model class, dao class, and database. Do not hook it into UI yet.
  • Separate all networking call in one class to support Repository pattern
  • Create a single class DataRepository to work in sync with local database and network
  • Create ViewModel classes of activities and fragments.
  • Now call methods from ViewModels in activities and fragments to populate the UI (Use databinding to get rid of more boilerplate code).
    Iterate as per new feature added

@championswimmer @the-dagger Need your suggestions.

ButterKnife binding

ButterKnife.bind(this); in the AuthenticationActivity.java should be written after setcontentview

Bad implementation of Splash screen

Actual Behaviour
Currently, the splash screen loads full-fledged layout which takes a noticeable amount of time to load

Expected Behaviour
Splash screen should not have layout but themes. Themes loads almost instantly.

Steps to reproduce it

  1. Open the app.

Add support for sending messages and drafts

The following steps would need to be taken:

  • Implement input TextBox along side the RecyclerView which currently takes the complete height of the parent.
  • Implement sending the message when internet is available with the help of Gitter API
  • Add a new column called DraftMessage in the RoomsTable which will give us drafted message support.
  • Modify the MessagesTable and add another column called syncState which denotes the whether the message has been synced or not. (This is extremely usefull when internet is not available)
  • Implement SyncAdapter to sync not synced items in MessagesTable to be synced with Gitter.
  • Implement broadcast recievers, stub content provider and services to support the SyncAdapter
  • Make sure the message is sent as sync adapter fails in certain circumstances.

Difficulty: Hard

CC: @championswimmer @the-dagger

Please add bounty points :)

Swipe to refresh the RoomsFragment Layout

Actual Behaviour

Now there is no any option to refresh the RoomsFragment to know the unread message in RoomsFragment. We only have one option which is click the Room button in bottom navigation

Expected Behaviour

I think it is the good choice to refresh the RoomsFragment when we vertical swipe in the screen.

Steps to reproduce it

Adding theSwipeRefreshLayout in the RoomsFragment layout.

LogCat for the issue

This is improvement

Screenshots of the issue
No Screen shot
Expected Bounty
100
Mention the bounty you expect for the issue (if not tagged in the issue)

Getting Messages from every Table

Actual Behaviour
Saved Messaged in realm are adding up with every room messages
Expected Behaviour
Only Message of the room selected should come
Steps to reproduce it

LogCat for the issue

No crash only messages are adding up with every room messages
Screenshots of the issue

Expected Bounty
20

Use hint instead of text

Actual Behaviour
The EditText in RoomFragment uses text to display the placeholder text

Expected Behaviour
It should use hint to display the placeholder text

App crash on EditText focus

Actual behavior
App crashes when the EditText in RoomFragment is focused

LogCat
java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction.
at io.realm.internal.Table.throwImmutable(Table.java:841)
at io.realm.internal.Table.checkImmutable(Table.java:699)
at io.realm.internal.UncheckedRow.setString(UncheckedRow.java:226)
at io.realm.RoomsTableRealmProxy.realmSet$draftMessage(RoomsTableRealmProxy.java:289)
at com.codingblocks.chatter.RoomsTable.setDraftMessage(RoomsTable.java:30)
at com.codingblocks.chatter.RoomFragment$3.onFocusChange(RoomFragment.java:117)
at android.view.View.onFocusChanged(View.java:5726)
at android.widget.TextView.onFocusChanged(TextView.java:8241)
at android.view.View.handleFocusGainInternal(View.java:5481)
at android.view.View.requestFocusNoSearch(View.java:8481)
at android.view.View.requestFocus(View.java:8460)
at android.view.View.requestFocus(View.java:8427)
at android.view.View.requestFocus(View.java:8406)
at android.view.View.onTouchEvent(View.java:10314)
at android.widget.TextView.onTouchEvent(TextView.java:8322)
at android.view.View.dispatchTouchEvent(View.java:9306)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2403)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
at android.app.Activity.dispatchTouchEvent(Activity.java:2820)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2364)
at android.view.View.dispatchPointerEvent(View.java:9526)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4267)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4133)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3674)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3727)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3693)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3819)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3701)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3876)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3674)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3727)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3693)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3701)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3674)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5959)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5933)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5894)
at android
05-18 14:45:11.520 14438-14438/com.codingblocks.chatter E/MQSEventManagerDelegate: failed to get MQSService.

Error 404 on gitterAPI call

At first after adding logs to all requests, I found that the server is not giving any response (404 not found) due to which the JSONObject Class is unable to create a json object

  • The shared preferences are successfully saving the user's access token
  • the okhttp request
Request request = new Request.Builder()
                        .url("https://gitter.im/v1/user/me")
                        .addHeader("Accept", "application/json")
                        .addHeader("Authorization:", "Bearer " + accessToken)
                        .build();

is giving no response(404)

  • thus the JSONObject is not created.

Here are the detailed logs:

6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: onCreateView:=====================WELCOME TO THE ROOM(S) FRAGMENT!!=================
6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: onCreateView: Realm initialized and got its instance.querying for results
6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: onCreateView: realm query result (rooms):[]
onCreateView: adding on change listener for live results on realmResults (room) 
6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: onCreateView: setting rv layout manager and  calling display rooms for the following result:[]
6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: displayRooms: called with realmResult(rooms):[]
displayRooms: roomsize=0, calling getrooms(1)
getRooms: called with severity=1
isNetworkAvailable: called
6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: getRooms: network is availabale
6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: getRooms: getting access token from shared prefs->UserPreferences
getRooms: token recievede887b3aab4a137af403da8e65ebd9f63039d60fa
getRooms: creating OkHTTP Request
6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: getRooms: request created:Request{method=GET, url=https://gitter.im/v1/rooms, tag=null}
getRooms:  creating new call using request and enqueue
.301 6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: displayRooms: recycle view setted with  rooms:[]
displayRooms: calling getrooms(severity:0)
getRooms: called with severity=0
isNetworkAvailable: called
.302 6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: getRooms: network is availabale
.308 6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: getRooms: getting access token from shared prefs->UserPreferences
getRooms: token recieved :######my_access_token##################
getRooms: creating OkHTTP Request
.309 6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: getRooms: request created:Request{method=GET, url=https://gitter.im/v1/rooms, tag=null}
getRooms:  creating new call using request and enqueue
.811 6554-6604/com.codingblocks.chatter E/NativeCrypto: ssl=0xb8f9e0a0 cert_verify_callback x509_store_ctx=0xa1b10460 arg=0x0
ssl=0xb8f9e0a0 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
.937 6554-6606/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9096c90 cert_verify_callback x509_store_ctx=0xa1a0c460 arg=0x0
ssl=0xb9096c90 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
30.389 6554-6604/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: client:onResponse:response recieved: Response{protocol=http/1.1, code=404, message=Not Found, url=https://gitter.im/v1/rooms}
client:onResponse:responseText:{"rooms":Response{protocol=http/1.1, code=404, message=Not Found, url=https://gitter.im/v1/rooms}}
client:onResponse:started running on UI Thread
30.403 6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: runUI: inside run
30.404 6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: runUI: trying to convert to json object
30.406 6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: run: json exception occurred:Unterminated object at character 18 of {"rooms":Response{protocol=http/1.1, code=404, message=Not Found, url=https://gitter.im/v1/rooms}}
30.589 6554-6606/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: client:onResponse:response recieved: Response{protocol=http/1.1, code=404, message=Not Found, url=https://gitter.im/v1/rooms}
client:onResponse:responseText:{"rooms":Response{protocol=http/1.1, code=404, message=Not Found, url=https://gitter.im/v1/rooms}}
client:onResponse:started running on UI Thread
30.590 6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: runUI: inside run
runUI: trying to convert to json object
30.595 6554-6554/com.codingblocks.chatter E/ANSH>>ROOMFRAG>>: run: json exception occurred:Unterminated object at character 18 of {"rooms":Response{protocol=http/1.1, code=404, message=Not Found, url=https://gitter.im/v1/rooms}}


    

@the-dagger @championswimmer

App Crashes when no internet connection on the time of opening the app

Actual Behaviour

When no internet connection available while opening the app then the App automatically crashes.

Expected Behaviour

If no internet connection available then App must open the NoNetworkActivity.

Steps to reproduce it
The problem occurs on ButterKnife to bind the button.

LogCat for the issue

05-24 12:14:34.794 24877-24877/com.codingblocks.chatter E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.codingblocks.chatter, PID: 24877
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.codingblocks.chatter/com.codingblocks.chatter.NoNetworkActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2455)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2515)
        at android.app.ActivityThread.access$1000(ActivityThread.java:154)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:157)
        at android.app.ActivityThread.main(ActivityThread.java:5571)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at com.codingblocks.chatter.NoNetworkActivity.onCreate(NoNetworkActivity.java:34)
        at android.app.Activity.performCreate(Activity.java:6357)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2408)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2515) 
        at android.app.ActivityThread.access$1000(ActivityThread.java:154) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:157) 
        at android.app.ActivityThread.main(ActivityThread.java:5571) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635) 

Screenshots of the issue

20180524_122559

Expected Bounty

20

App Crashing on Selecting a room

Actual Behaviour
On selecting a room app is crashing with error
Invalid query: field 'roomId' not found in table 'RoomsTable'.

Expected Behaviour

It should display a list of messages
Steps to reproduce it

Just select any of the room from rooms fragment

LogCat for the issue

05-25 09:41:52.504 30729-30729/com.codingblocks.chatter E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.codingblocks.chatter, PID: 30729
java.lang.IllegalArgumentException: Invalid query: field 'roomId' not found in table 'RoomsTable'.
at io.realm.internal.fields.CachedFieldDescriptor.compileFieldDescription(CachedFieldDescriptor.java:78)
at io.realm.internal.fields.FieldDescriptor.compileIfNecessary(FieldDescriptor.java:284)
at io.realm.internal.fields.FieldDescriptor.getColumnIndices(FieldDescriptor.java:177)
at io.realm.RealmQuery.equalToWithoutThreadValidation(RealmQuery.java:256)
at io.realm.RealmQuery.equalTo(RealmQuery.java:251)
at io.realm.RealmQuery.equalTo(RealmQuery.java:236)
at com.codingblocks.chatter.RoomFragment.onCreateView(RoomFragment.java:78)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6798)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Screenshots of the issue

Where-ever possible add a screenshot of the issue.

Expected Bounty

20

org.json.JSONException: No value for username when trying to get username from json response

org.json.JSONException: No value for username
        at org.json.JSONObject.get(JSONObject.java:389)
        at org.json.JSONObject.getString(JSONObject.java:550)
        at com.codingblocks.chatter.DashboardActivity$1.onResponse(DashboardActivity.java:80)
        at okhttp3.RealCall$AsyncCall.execute(RealCall.java:141)
        at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:818)

is crashing the app

Chatter Application unable to start. It shows 'authenticationWebView' was not found

Device Use : Redmi Note 3

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.codingblocks.chatter/com.codingblocks.chatter.AuthenticationActivity}: java.lang.IllegalStateException: Required view 'authentication_web_view' with ID 2131230747 for field 'authenticationWebView' was not found. If this view is optional add '@Nullable' (fields) or '@Optional' (methods) annotation.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2455)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2515)
        at android.app.ActivityThread.access$1000(ActivityThread.java:154)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:157)
        at android.app.ActivityThread.main(ActivityThread.java:5571)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
     Caused by: java.lang.IllegalStateException: Required view 'authentication_web_view' with ID 2131230747 for field 'authenticationWebView' was not found. If this view is optional add '@Nullable' (fields) or '@Optional' (methods) annotation.
        at butterknife.internal.Utils.findRequiredView(Utils.java:92)
        at butterknife.internal.Utils.findRequiredViewAsType(Utils.java:104)
        at com.codingblocks.chatter.AuthenticationActivity_ViewBinding.<init>(AuthenticationActivity_ViewBinding.java:25)
        at java.lang.reflect.Constructor.newInstance(Native Method)
        at butterknife.ButterKnife.createBinding(ButterKnife.java:199)
        at butterknife.ButterKnife.bind(ButterKnife.java:124)
        at com.codingblocks.chatter.AuthenticationActivity.onCreate(AuthenticationActivity.java:39)
        at android.app.Activity.performCreate(Activity.java:6357)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2408)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2515) 
        at android.app.ActivityThread.access$1000(ActivityThread.java:154) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:157) 
        at android.app.ActivityThread.main(ActivityThread.java:5571) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635) 

App crash when selecting Rooms in bottom navigation bar

The app crashes when a user selects the Rooms tab in the bottom navigation bar.

Loogcat For The Error

05-15 10:20:38.243 7526-7526/com.codingblocks.chatter E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.codingblocks.chatter, PID: 7526
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
at com.codingblocks.chatter.RoomsFragment.onCreateView(RoomsFragment.java:71)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2248)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1340)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1569)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1636)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2201)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2155)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2064)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:718)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
05-15 10:20:38.980 7526-7542/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9bd9e98 cert_verify_callback x509_store_ctx=0xa3dfac7c arg=0x0
05-15 10:20:38.980 7526-7542/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9bd9e98 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA

I would like to work on this issue.

Add notifications support

  • Implement TaskStackBuilder builder object
  • Sync messages when you are connected online by extending the capabilities of the already
    implemented SyncAdapter in #10 via #13
  • Add extending capacities so that messages can be viewed channel wise inside the notification shade via the NotificationCompat.Builder
  • Create a PendingIntent for the Activity. Call setContentIntent() to add the PendingIntent to the notification and route the user the dashboard.
  • Add support for updating notifications.
  • Add support for removing notifications

CC: @championswimmer @the-dagger
Difficulty: Hard
Pls add bounties

android.content.res.Resources$NotFoundException: String resource ID #0x64

Process: com.codingblocks.chatter, PID: 12436
    android.content.res.Resources$NotFoundException: String resource ID #0x64
        at android.content.res.Resources.getText(Resources.java:328)
        at android.content.res.MiuiResources.getText(MiuiResources.java:124)
        at android.widget.TextView.setText(TextView.java:4432)
        at com.codingblocks.chatter.RoomsAdapter.onBindViewHolder(RoomsAdapter.java:54)
        at com.codingblocks.chatter.RoomsAdapter.onBindViewHolder(RoomsAdapter.java:12)
        at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6354)
        at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6387)
        at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5343)
        at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5606)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5448)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5444)
        at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224)
        at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551)
        at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511)
        at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:595)
        at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3600)
        at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3036)
        at android.view.View.measure(View.java:18827)
        at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
        at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
        at android.view.View.measure(View.java:18827)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:18827)
        at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
        at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
        at android.view.View.measure(View.java:18827)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
        at android.view.View.measure(View.java:18827)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
        at android.view.View.measure(View.java:18827)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:18827)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
        at android.view.View.measure(View.java:18827)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5954)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
        at android.view.View.measure(View.java:18827)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2136)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1248)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1484)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6064)
    	at android.view.Choreographer$CallbackRecord.run(Choreographer.jav

Add gitter api based authentication to the app

  • Take out the current chat activity as it is a boiler plate only.
  • Create a new Gitter app in order to make use of the gitter api
  • Implement authentication as mentioned in a complex process by the Gitter API at: https://developer.gitter.im/docs/authentication
  • For the last phase a networking client can be used as the stock way sucks like OkHttp
  • Store the generated access code in shared preference and display it in dashboard activity.
  • When no access_code is there make the user to authenticate again and if internet is also absent in addition prompt the user to authenticate.
  • Add Butterknife

The steps are complex and would need the use of a Web browser thus recommending to use a WebView and a dedicated activity for authentication.

Complexity: Hard.

CC: @the-dagger @championswimmer @garg-anuj

Organize the code structure

Currently all the code-files are in a single directory. Organizing it into directories for Fragments, Adapters etc. would be easy for viewing purposes.

New Icon For Chatter

I think the App should have an icon with chatter's Color palette and gitter-like icon.
Working on it

App crash upon traversing through all the buttons in the bottom nav bar

When the user first selects the Rooms tab, it works fine. (I am working on the issue #26 ) . But after frequent and continuous traversal of all the tabs, the app crashes.

Logcat
05-15 10:35:48.092 8971-8989/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9bd2bd0 cert_verify_callback x509_store_ctx=0xa3dfac7c arg=0x0
05-15 10:35:48.092 8971-8989/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9bd2bd0 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
05-15 10:35:54.618 8971-9092/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9c26de8 cert_verify_callback x509_store_ctx=0xa2d9cc7c arg=0x0
05-15 10:35:54.618 8971-9092/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9c26de8 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
05-15 10:35:54.822 8971-9094/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9c10408 cert_verify_callback x509_store_ctx=0xa2c97c7c arg=0x0
05-15 10:35:54.822 8971-9094/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9c10408 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
05-15 10:35:54.879 8971-9103/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9bb4e48 cert_verify_callback x509_store_ctx=0xa28dcc7c arg=0x0
05-15 10:35:54.880 8971-9103/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9bb4e48 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
05-15 10:35:54.897 8971-9102/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9bb4d08 cert_verify_callback x509_store_ctx=0xa29e1c7c arg=0x0
05-15 10:35:54.897 8971-9102/com.codingblocks.chatter E/NativeCrypto: ssl=0xb9bb4d08 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
05-15 10:35:55.259 8971-9092/com.codingblocks.chatter E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.codingblocks.chatter, PID: 8971
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.runOnUiThread(java.lang.Runnable)' on a null object reference
at com.codingblocks.chatter.RoomsFragment$2.onResponse(RoomsFragment.java:133)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:141)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

I would like to work on this issue.

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager

05-15 19:55:44.535 25362-25535/com.codingblocks.chatter E/chromium: [ERROR:gl_context_virtual.cc(39)] Trying to make virtual context current without decoder.
05-15 19:55:47.470 25362-25362/com.codingblocks.chatter E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.codingblocks.chatter, PID: 25362
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
        at com.codingblocks.chatter.RoomsFragment.onCreateView(RoomsFragment.java:71)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2248)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1340)
        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1569)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1636)
        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)
        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2201)
        at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2155)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2064)
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:718)
        at android.os.Handler.handleCallback(Handler.java:742)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:157)
        at android.app.ActivityThread.main(ActivityThread.java:5571)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)

App crashes when we click the Rooms button in bottom navigation bar.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.