Skip to content

Commit 2d631e5

Browse files
v4.3.11
1 parent 9b741c1 commit 2d631e5

File tree

7 files changed

+482
-253
lines changed

7 files changed

+482
-253
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ android {
99
applicationId "com.cometchat.javasampleapp"
1010
minSdk 21
1111
targetSdk 33
12-
versionCode 10
13-
versionName "4.3.6"
12+
versionCode 11
13+
versionName "4.3.11"
1414

1515
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1616
manifestPlaceholders = [file_provider: "com.cometchat.javasampleapp"]

app/src/main/assets/SampleUsers.json

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"users": [
3+
{
4+
"uid": "superhero1",
5+
"name": "Iron Man",
6+
"avatar": "https://assets.cometchat.io/sampleapp/users/ironman.png"
7+
},
8+
{
9+
"uid": "superhero2",
10+
"name": "Captain America",
11+
"avatar": "https://assets.cometchat.io/sampleapp/users/captainamerica.png"
12+
},
13+
{
14+
"uid": "superhero3",
15+
"name": "Spiderman",
16+
"avatar": "https://assets.cometchat.io/sampleapp/users/spiderman.png"
17+
},
18+
{
19+
"uid": "superhero4",
20+
"name": "Wolverine",
21+
"avatar": "https://assets.cometchat.io/sampleapp/users/wolverine.png"
22+
},
23+
{
24+
"uid": "superhero5",
25+
"name": "Cyclops",
26+
"avatar": "https://assets.cometchat.io/sampleapp/users/cyclops.png"
27+
}
28+
]
29+
}

app/src/main/java/com/cometchat/javasampleapp/AppUtils.java

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,28 @@
1212
import com.cometchat.chat.core.CometChat;
1313
import com.cometchat.chat.exceptions.CometChatException;
1414
import com.cometchat.chat.models.Group;
15-
import com.cometchat.chat.models.TextMessage;
1615
import com.cometchat.chat.models.User;
16+
import com.cometchat.chatuikit.shared.resources.utils.Utils;
17+
import com.cometchat.javasampleapp.constants.StringConstants;
18+
19+
import org.json.JSONArray;
20+
import org.json.JSONObject;
21+
22+
import java.io.IOException;
23+
import java.io.InputStream;
24+
import java.util.ArrayList;
25+
import java.util.List;
26+
27+
import okhttp3.Call;
28+
import okhttp3.Callback;
29+
import okhttp3.OkHttpClient;
30+
import okhttp3.Request;
31+
import okhttp3.Response;
1732

1833
public class AppUtils {
1934
private static Group group;
2035
private static User user;
36+
private static List<User> userList = new ArrayList<>();
2137

2238
public static void fetchDefaultObjects() {
2339
CometChat.getGroup("supergroup", new CometChat.CallbackListener<Group>() {
@@ -31,7 +47,7 @@ public void onError(CometChatException e) {
3147

3248
}
3349
});
34-
CometChat.getUser("superhero5", new CometChat.CallbackListener<User>() {
50+
CometChat.getUser(!userList.isEmpty() ? userList.get(userList.size() - 1).getUid() : "superhero5", new CometChat.CallbackListener<User>() {
3551
@Override
3652
public void onSuccess(User user_) {
3753
user = user_;
@@ -44,6 +60,68 @@ public void onError(CometChatException e) {
4460
});
4561
}
4662

63+
public static void fetchSampleUsers(CometChat.CallbackListener<List<User>> listener) {
64+
if (userList.isEmpty()) {
65+
Request request = new Request.Builder().url(StringConstants.SAMPLE_APP_USERS_URL).method("GET", null).build();
66+
OkHttpClient client = new OkHttpClient();
67+
client.newCall(request).enqueue(new Callback() {
68+
public void onFailure(Call call, IOException e) {
69+
Utils.runOnMainThread(() -> listener.onError(new CometChatException("11", e.getMessage())));
70+
}
71+
72+
public void onResponse(Call call, Response response) {
73+
if (response.isSuccessful() && response.body() != null) {
74+
try {
75+
userList = processSampleUserList(response.body().string());
76+
} catch (IOException e) {
77+
Utils.runOnMainThread(() -> listener.onError(new CometChatException("10", e.getMessage())));
78+
}
79+
Utils.runOnMainThread(() -> listener.onSuccess(userList));
80+
} else {
81+
Utils.runOnMainThread(() -> listener.onError(new CometChatException("Unexpected code ", String.valueOf(response.code()))));
82+
}
83+
}
84+
});
85+
} else {
86+
Utils.runOnMainThread(() -> listener.onSuccess(userList));
87+
}
88+
}
89+
90+
public static List<User> processSampleUserList(String jsonString) {
91+
List<User> users = new ArrayList<>();
92+
try {
93+
JSONObject jsonObject = new JSONObject(jsonString);
94+
JSONArray jsonArray = jsonObject.getJSONArray(StringConstants.KEY_USER);
95+
for (int i = 0; i < jsonArray.length(); i++) {
96+
JSONObject userJson = jsonArray.getJSONObject(i);
97+
User user = new User();
98+
user.setUid(userJson.getString(StringConstants.UID));
99+
user.setName(userJson.getString(StringConstants.NAME));
100+
user.setAvatar(userJson.getString(StringConstants.AVATAR));
101+
users.add(user);
102+
}
103+
} catch (Exception ignore) {
104+
105+
}
106+
return users;
107+
}
108+
109+
public static String loadJSONFromAsset(Context context) {
110+
String json = null;
111+
try {
112+
InputStream is = context.getAssets().open("SampleUsers.json");
113+
int size = is.available();
114+
byte[] buffer = new byte[size];
115+
is.read(buffer);
116+
is.close();
117+
json = new String(buffer, "UTF-8");
118+
} catch (IOException ex) {
119+
ex.printStackTrace();
120+
return null;
121+
}
122+
return json;
123+
}
124+
47125
public static Group getDefaultGroup() {
48126
return group;
49127
}

app/src/main/java/com/cometchat/javasampleapp/activity/MainActivity.java

Lines changed: 108 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,94 @@
11
package com.cometchat.javasampleapp.activity;
22

3+
import android.content.Context;
34
import android.content.Intent;
45
import android.content.res.ColorStateList;
56
import android.os.Bundle;
7+
import android.util.Log;
68
import android.view.View;
9+
import android.widget.ImageView;
710
import android.widget.LinearLayout;
11+
import android.widget.ProgressBar;
12+
import android.widget.TextView;
813
import android.widget.Toast;
914

1015
import androidx.appcompat.app.AppCompatActivity;
1116
import androidx.appcompat.widget.AppCompatImageView;
1217
import androidx.appcompat.widget.AppCompatTextView;
1318
import androidx.core.content.ContextCompat;
1419

20+
import com.bumptech.glide.Glide;
1521
import com.cometchat.chatuikit.shared.cometchatuikit.CometChatUIKit;
1622
import com.cometchat.chatuikit.shared.cometchatuikit.UIKitSettings;
1723
import com.cometchat.chatuikit.shared.resources.utils.Utils;
1824
import com.cometchat.chat.core.CometChat;
1925
import com.cometchat.chat.exceptions.CometChatException;
2026
import com.cometchat.javasampleapp.AppConstants;
2127
import com.cometchat.javasampleapp.AppUtils;
22-
import com.cometchat.javasampleapp.Application;
2328
import com.cometchat.javasampleapp.BuildConfig;
2429
import com.cometchat.javasampleapp.R;
2530
import com.cometchat.chat.models.User;
2631
import com.google.android.material.card.MaterialCardView;
2732

2833
import org.json.JSONObject;
2934

35+
import java.io.IOException;
36+
import java.io.InputStream;
37+
import java.util.List;
38+
3039
public class MainActivity extends AppCompatActivity {
3140

32-
private MaterialCardView superhero1;
41+
private MaterialCardView user1;
3342

34-
private MaterialCardView superhero2;
43+
private MaterialCardView user2;
3544

36-
private MaterialCardView superhero3;
45+
private MaterialCardView user3;
3746

38-
private MaterialCardView superhero4;
47+
private MaterialCardView user4;
3948

4049
private AppCompatImageView ivLogo;
41-
50+
private ProgressBar progressBar;
4251
private AppCompatTextView tvCometChat;
4352
private LinearLayout parentView;
53+
private LinearLayout gridLayoutContainer;
54+
private TextView stateMessage;
55+
private LinearLayout stateLayout;
56+
private TextView user1Name, user2Name, user3Name, user4Name;
57+
private ImageView user1Avatar, user2Avatar, user3Avatar, user4Avatar;
58+
4459

4560
@Override
4661
protected void onCreate(Bundle savedInstanceState) {
4762
super.onCreate(savedInstanceState);
4863
setContentView(R.layout.activity_main);
4964
parentView = findViewById(R.id.parent_view);
65+
progressBar = findViewById(R.id.progress_bar);
66+
stateMessage = findViewById(R.id.state_message);
67+
stateLayout = findViewById(R.id.state_layout);
68+
gridLayoutContainer = findViewById(R.id.grid_layout_container);
69+
user1 = findViewById(R.id.user1);
70+
user2 = findViewById(R.id.user2);
71+
user3 = findViewById(R.id.user3);
72+
user4 = findViewById(R.id.user4);
73+
ivLogo = findViewById(R.id.ivLogo);
74+
tvCometChat = findViewById(R.id.tvComet);
75+
user1Name = findViewById(R.id.user1_name);
76+
user2Name = findViewById(R.id.user2_name);
77+
user3Name = findViewById(R.id.user3_name);
78+
user4Name = findViewById(R.id.user4_name);
79+
user1Avatar = findViewById(R.id.user1_avatar_image);
80+
user2Avatar = findViewById(R.id.user2_avatar_image);
81+
user3Avatar = findViewById(R.id.user3_avatar_image);
82+
user4Avatar = findViewById(R.id.user4_avatar_image);
83+
84+
user1.setVisibility(View.GONE);
85+
user2.setVisibility(View.GONE);
86+
user3.setVisibility(View.GONE);
87+
user4.setVisibility(View.GONE);
88+
89+
gridLayoutContainer.setVisibility(View.INVISIBLE);
90+
stateMessage.setText(R.string.please_wait);
91+
progressBar.setVisibility(View.VISIBLE);
5092
Utils.setStatusBarColor(this, getResources().getColor(android.R.color.white));
5193
UIKitSettings uiKitSettings = new UIKitSettings.UIKitSettingsBuilder().setRegion(AppConstants.REGION).setAppId(AppConstants.APP_ID).setAuthKey(AppConstants.AUTH_KEY).subscribePresenceForAllUsers().build();
5294
CometChatUIKit.init(this, uiKitSettings, new CometChat.CallbackListener<String>() {
@@ -65,29 +107,42 @@ public void onError(CometChatException e) {
65107
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
66108
}
67109
});
68-
superhero1 = findViewById(R.id.superhero1);
69-
superhero2 = findViewById(R.id.superhero2);
70-
superhero3 = findViewById(R.id.superhero3);
71-
superhero4 = findViewById(R.id.superhero4);
72-
ivLogo = findViewById(R.id.ivLogo);
73-
tvCometChat = findViewById(R.id.tvComet);
110+
111+
112+
AppUtils.fetchSampleUsers(new CometChat.CallbackListener<List<User>>() {
113+
@Override
114+
public void onSuccess(List<User> users) {
115+
if (!users.isEmpty()) {
116+
setUsers(users);
117+
} else {
118+
stateLayout.setVisibility(View.VISIBLE);
119+
progressBar.setVisibility(View.GONE);
120+
stateMessage.setText(R.string.no_sample_users_available);
121+
}
122+
}
123+
124+
@Override
125+
public void onError(CometChatException e) {
126+
setUsers(AppUtils.processSampleUserList(AppUtils.loadJSONFromAsset(MainActivity.this)));
127+
}
128+
});
74129
findViewById(R.id.login).setOnClickListener(view -> startActivity(new Intent(MainActivity.this, LoginActivity.class)));
75130

76-
superhero1.setOnClickListener(view -> {
77-
findViewById(R.id.superhero1Progressbar).setVisibility(View.VISIBLE);
78-
login("superhero1");
131+
user1.setOnClickListener(view -> {
132+
findViewById(R.id.user1Progressbar).setVisibility(View.VISIBLE);
133+
login(user1.getTag().toString());
79134
});
80-
superhero2.setOnClickListener(view -> {
81-
findViewById(R.id.superhero2Progressbar).setVisibility(View.VISIBLE);
82-
login("superhero2");
135+
user2.setOnClickListener(view -> {
136+
findViewById(R.id.user2Progressbar).setVisibility(View.VISIBLE);
137+
login(user2.getTag().toString());
83138
});
84-
superhero3.setOnClickListener(view -> {
85-
findViewById(R.id.superhero3Progressbar).setVisibility(View.VISIBLE);
86-
login("superhero3");
139+
user3.setOnClickListener(view -> {
140+
findViewById(R.id.user3Progressbar).setVisibility(View.VISIBLE);
141+
login(user3.getTag().toString());
87142
});
88-
superhero4.setOnClickListener(view -> {
89-
findViewById(R.id.superhero4Progressbar).setVisibility(View.VISIBLE);
90-
login("superhero4");
143+
user4.setOnClickListener(view -> {
144+
findViewById(R.id.user4Progressbar).setVisibility(View.VISIBLE);
145+
login(user4.getTag().toString());
91146
});
92147

93148
if (Utils.isDarkMode(this)) {
@@ -98,6 +153,35 @@ public void onError(CometChatException e) {
98153
setUpUI();
99154
}
100155

156+
private void setUsers(List<User> users) {
157+
progressBar.setVisibility(View.GONE);
158+
stateLayout.setVisibility(View.GONE);
159+
gridLayoutContainer.setVisibility(View.VISIBLE);
160+
for (int i = 0; i < users.size(); i++) {
161+
if (i == 0) {
162+
user1Name.setText(users.get(i).getName());
163+
Glide.with(this).load(users.get(i).getAvatar()).error(R.drawable.ironman).into(user1Avatar);
164+
user1.setTag(users.get(i).getUid());
165+
user1.setVisibility(View.VISIBLE);
166+
} else if (i == 1) {
167+
user2Name.setText(users.get(i).getName());
168+
Glide.with(this).load(users.get(i).getAvatar()).error(R.drawable.captainamerica).into(user2Avatar);
169+
user2.setTag(users.get(i).getUid());
170+
user2.setVisibility(View.VISIBLE);
171+
} else if (i == 2) {
172+
user3Name.setText(users.get(i).getName());
173+
Glide.with(this).load(users.get(i).getAvatar()).error(R.drawable.spiderman).into(user3Avatar);
174+
user3.setTag(users.get(i).getUid());
175+
user3.setVisibility(View.VISIBLE);
176+
} else if (i == 3) {
177+
user4Name.setText(users.get(i).getName());
178+
Glide.with(this).load(users.get(i).getAvatar()).error(R.drawable.wolverine).into(user4Avatar);
179+
user4.setTag(users.get(i).getUid());
180+
user4.setVisibility(View.VISIBLE);
181+
}
182+
}
183+
}
184+
101185
private void login(String uid) {
102186
CometChatUIKit.login(uid, new CometChat.CallbackListener<User>() {
103187
@Override

app/src/main/java/com/cometchat/javasampleapp/constants/StringConstants.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@
22

33
public class StringConstants {
44

5-
public static final String MODULE="module";
6-
public static final String CONVERSATIONS="Conversations";
7-
public static final String USERS="Users";
8-
public static final String GROUPS="Groups";
9-
public static final String MESSAGES="Messages";
10-
public static final String SHARED="Shared";
11-
public static final String CALLS="Calls";
12-
5+
public static final String MODULE = "module";
6+
public static final String CONVERSATIONS = "Conversations";
7+
public static final String USERS = "Users";
8+
public static final String GROUPS = "Groups";
9+
public static final String MESSAGES = "Messages";
10+
public static final String SHARED = "Shared";
11+
public static final String CALLS = "Calls";
12+
public static final String KEY_USER = "users";
13+
public static final String SAMPLE_APP_USERS_URL = "https://assets.cometchat.io/sampleapp/sampledata.json";
14+
public static final String UID = "uid";
15+
public static final String NAME = "name";
16+
public static final String AVATAR = "avatar";
1317

1418
}

0 commit comments

Comments
 (0)