Skip to content

Commit 6db167e

Browse files
Action Bar issues Fixed
1 parent 3dda5c6 commit 6db167e

File tree

7 files changed

+160
-77
lines changed

7 files changed

+160
-77
lines changed

.idea/misc.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Multi-user-Real-Time-Chat-Application-master/.idea/workspace.xml

Lines changed: 21 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/assistant/android/bolchal/ChatAdapter.java

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,33 @@
11
package com.assistant.android.bolchal;
22

3+
import android.annotation.SuppressLint;
34
import android.app.Activity;
45
import android.content.Context;
6+
import android.view.Gravity;
57
import android.view.LayoutInflater;
68
import android.view.View;
79
import android.view.ViewGroup;
810
import android.widget.ArrayAdapter;
911
import android.widget.ImageView;
12+
import android.widget.LinearLayout;
13+
import android.widget.RelativeLayout;
1014
import android.widget.TextView;
1115
import android.widget.Toast;
1216

1317
import androidx.annotation.NonNull;
1418
import androidx.annotation.Nullable;
19+
import androidx.recyclerview.widget.RecyclerView;
1520

1621
import com.bumptech.glide.Glide;
22+
import com.google.firebase.auth.FirebaseAuth;
1723

1824
import java.util.List;
25+
import java.util.Objects;
1926

2027
public class ChatAdapter extends ArrayAdapter<Message> {
2128

29+
30+
2231
public ChatAdapter(Context context, int resource, List<Message> objects){
2332
super(context,resource,objects);
2433
}
@@ -30,34 +39,37 @@ public View getView(int position, @Nullable View convertView, @NonNull ViewGroup
3039
convertView = ((Activity)getContext()).getLayoutInflater().inflate(R.layout.chat_layout_page,parent,false);
3140
}
3241

33-
TextView AuthorTxtView = (TextView)convertView.findViewById(R.id.nameTextView);
34-
ImageView photoImageView = (ImageView)convertView.findViewById(R.id.photoImageView);
35-
TextView messageTxtView = (TextView) convertView.findViewById(R.id.messageTextView);
36-
TextView timeTxtView = (TextView) convertView.findViewById(R.id.timeTextView);
37-
3842
Message message = getItem(position);
3943

44+
String user = Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getDisplayName();
45+
4046
boolean isPhotoAvailable = message.getPhotoUrl()!=null;
4147
boolean isTimeAvailable = message.getTime()!=null;
4248

43-
if(isPhotoAvailable){
44-
messageTxtView.setVisibility(View.GONE);
45-
photoImageView.setVisibility(View.VISIBLE);
46-
Glide.with(photoImageView.getContext())
47-
.load(message.getPhotoUrl())
48-
.centerCrop().placeholder(R.drawable.placeholder).into(photoImageView);
49-
}else{
50-
messageTxtView.setVisibility(View.VISIBLE);
51-
photoImageView.setVisibility(View.GONE);
52-
messageTxtView.setText(message.getText());
53-
}
5449

55-
if(isTimeAvailable){
56-
timeTxtView.setVisibility(View.VISIBLE);
57-
timeTxtView.setText(message.getTime());
58-
}else timeTxtView.setVisibility(View.GONE);
50+
TextView AuthorTxtView = (TextView) convertView.findViewById(R.id.nameTextView);
51+
ImageView photoImageView = (ImageView) convertView.findViewById(R.id.photoImageView);
52+
TextView messageTxtView = (TextView) convertView.findViewById(R.id.messageTextView);
53+
TextView timeTxtView = (TextView) convertView.findViewById(R.id.timeTextView);
54+
55+
if (isPhotoAvailable) {
56+
messageTxtView.setVisibility(View.GONE);
57+
photoImageView.setVisibility(View.VISIBLE);
58+
Glide.with(photoImageView.getContext())
59+
.load(message.getPhotoUrl())
60+
.centerCrop().placeholder(R.drawable.placeholder).into(photoImageView);
61+
} else {
62+
messageTxtView.setVisibility(View.VISIBLE);
63+
photoImageView.setVisibility(View.GONE);
64+
messageTxtView.setText(message.getText());
65+
}
66+
67+
if (isTimeAvailable) {
68+
timeTxtView.setVisibility(View.VISIBLE);
69+
timeTxtView.setText(message.getTime());
70+
} else timeTxtView.setVisibility(View.GONE);
5971

60-
AuthorTxtView.setText(message.getName());
72+
AuthorTxtView.setText(message.getName());
6173

6274
return convertView;
6375
}

app/src/main/java/com/assistant/android/bolchal/MainActivity.java

Lines changed: 39 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import androidx.constraintlayout.widget.ConstraintLayout;
77
import androidx.recyclerview.widget.RecyclerView;
88

9+
import android.app.Activity;
910
import android.content.Intent;
1011
import android.net.Uri;
1112
import android.os.Bundle;
@@ -21,8 +22,11 @@
2122
import android.widget.EditText;
2223
import android.widget.ImageView;
2324
import android.widget.ListView;
25+
import android.widget.PopupMenu;
26+
import android.widget.TextView;
2427
import android.widget.Toast;
2528

29+
import com.bumptech.glide.Glide;
2630
import com.firebase.ui.auth.AuthUI;
2731
import com.google.android.gms.tasks.OnFailureListener;
2832
import com.google.android.gms.tasks.OnSuccessListener;
@@ -42,6 +46,7 @@
4246
import com.google.firebase.storage.FirebaseStorage;
4347
import com.google.firebase.storage.StorageReference;
4448
import com.google.firebase.storage.UploadTask;
49+
import com.mikhaellopez.circularimageview.CircularImageView;
4550

4651
import java.net.URI;
4752
import java.net.URL;
@@ -54,14 +59,17 @@
5459
import java.util.Objects;
5560
import java.util.concurrent.TimeUnit;
5661

57-
public class MainActivity extends AppCompatActivity {
62+
public class MainActivity extends Activity {
5863

5964
private ListView mListView;
6065
private ConstraintLayout sendLayout;
6166
private ImageView addImage;
6267
private EditText msgEditView;
6368
private ImageView sendImg;
6469
private ChatAdapter mChatAdapter;
70+
private TextView userNameTxtView;
71+
private CircularImageView userProfilePic;
72+
private ImageView settingImg;
6573

6674
private String mUserName;
6775
private static final String TAG = "MainActivity";
@@ -94,6 +102,9 @@ protected void onCreate(Bundle savedInstanceState) {
94102
addImage = findViewById(R.id.addImageExtra);
95103
msgEditView = (EditText)findViewById(R.id.typingMsgTextView);
96104
sendImg = findViewById(R.id.sendImageView);
105+
userNameTxtView = findViewById(R.id.userName);
106+
userProfilePic = findViewById(R.id.userProfileImg);
107+
settingImg = findViewById(R.id.action_menu_presenter);
97108

98109
mFirebaseDatabase = FirebaseDatabase.getInstance();
99110
mMessageDatabaseReference = mFirebaseDatabase.getReference().child("messages");
@@ -156,6 +167,13 @@ public void afterTextChanged(Editable editable) {
156167
});
157168
msgEditView.setFilters(new InputFilter[]{new InputFilter.LengthFilter(DEFAULT_MSG_LENGTH_LIMIT)});
158169

170+
/**
171+
* Set UserName And Profile pic at the headinning of page
172+
*/
173+
userNameTxtView.setText(mFirebaseAuth.getCurrentUser().getDisplayName());
174+
Glide.with(userProfilePic.getContext()).load(mFirebaseAuth.getCurrentUser().getPhotoUrl())
175+
.placeholder(R.drawable.profile_placeholder).into(userProfilePic);
176+
159177
/**
160178
* Photo/Resource pickup Intent to Select a image for a message
161179
*/
@@ -226,36 +244,30 @@ public void onCancelled(@NonNull DatabaseError error) {
226244
};
227245
mMessageDatabaseReference.addChildEventListener(mChildEventListener);
228246

229-
/*
230-
PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
231-
@Override
232-
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
233-
Toast.makeText(MainActivity.this,"Code Verified",Toast.LENGTH_SHORT).show();
234-
235-
sign
236-
}
237-
238-
@Override
239-
public void onVerificationFailed(@NonNull FirebaseException e) {
240-
Toast.makeText(MainActivity.this,"Unsucessfull",Toast.LENGTH_SHORT).show();
241-
}
242-
};
247+
//logout when settingIcon is clicked
248+
settingImg.setOnClickListener(view -> {
249+
PopupMenu popupMenu = new PopupMenu(MainActivity.this,settingImg);
250+
MainActivity.this.getMenuInflater().inflate(R.menu.main_page_menu, popupMenu.getMenu());
243251

244-
PhoneAuthOptions options =
245-
PhoneAuthOptions.newBuilder(mFirebaseAuth)
246-
.setPhoneNumber("+91 5555 962 304") // Phone number to verify
247-
.setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit
248-
.setActivity(this) // Activity (for callback binding)
249-
.setCallbacks(mCallbacks) // OnVerificationStateChangedCallbacks
250-
.build();
251-
PhoneAuthProvider.verifyPhoneNumber(options);
252-
*/
252+
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
253+
@Override
254+
public boolean onMenuItemClick(MenuItem menuItem) {
255+
switch (menuItem.getItemId()){
256+
case R.id.sign_out:
257+
//signOut
258+
FirebaseAuth.getInstance().signOut();
259+
startActivity(new Intent(MainActivity.this,LogIn_page.class));
260+
return true;
261+
default:
262+
return false;
263+
}
264+
}
265+
});
266+
popupMenu.show();
267+
});
253268

254269
}
255270

256-
/**
257-
* TODO : Edit rules of real Time Firebase
258-
*/
259271

260272
private void onSignedInIntialize(String displayName) {
261273
mUserName = displayName;
@@ -364,25 +376,6 @@ public void onFailure(@NonNull Exception e) {
364376
}
365377
}
366378

367-
@Override
368-
public boolean onCreateOptionsMenu(Menu menu) {
369-
MenuInflater inflater = getMenuInflater();
370-
inflater.inflate(R.menu.main_page_menu, menu);
371-
return true;
372-
}
373-
374-
@Override
375-
public boolean onOptionsItemSelected(MenuItem item) {
376-
switch (item.getItemId()){
377-
case R.id.sign_out:
378-
//signOut
379-
FirebaseAuth.getInstance().signOut();
380-
startActivity(new Intent(MainActivity.this,LogIn_page.class));
381-
return true;
382-
default:
383-
return super.onOptionsItemSelected(item);
384-
}
385-
}
386379
@Override
387380
protected void onPause() {
388381
super.onPause();

app/src/main/java/com/assistant/android/bolchal/details.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,17 @@
1616

1717
import com.bumptech.glide.Glide;
1818
import com.google.android.gms.tasks.OnCompleteListener;
19+
import com.google.android.gms.tasks.OnFailureListener;
20+
import com.google.android.gms.tasks.OnSuccessListener;
1921
import com.google.android.gms.tasks.Task;
2022
import com.google.firebase.auth.FirebaseAuth;
2123
import com.google.firebase.auth.FirebaseUser;
2224
import com.google.firebase.auth.UserProfileChangeRequest;
25+
import com.google.firebase.database.DatabaseReference;
26+
import com.google.firebase.database.FirebaseDatabase;
27+
import com.google.firebase.storage.FirebaseStorage;
28+
import com.google.firebase.storage.StorageReference;
29+
import com.google.firebase.storage.UploadTask;
2330
import com.mikhaellopez.circularimageview.CircularImageView;
2431

2532
import java.util.Objects;
@@ -33,6 +40,7 @@ public class details extends Activity {
3340

3441
private static final int RC_PROFILE_PICKER = 20;
3542
private Uri profile_pic_url;
43+
private StorageReference mRef;
3644

3745
@Override
3846
protected void onCreate(Bundle savedInstanceState) {
@@ -47,6 +55,7 @@ protected void onCreate(Bundle savedInstanceState) {
4755

4856
firebaseAuth = FirebaseAuth.getInstance();
4957
FirebaseUser user = firebaseAuth.getCurrentUser();
58+
mRef = FirebaseStorage.getInstance().getReference().child("users");
5059

5160
user_name = "anonymas";
5261

@@ -86,6 +95,7 @@ public void onClick(View view) {
8695
@Override
8796
public void onComplete(@NonNull Task<Void> task) {
8897
if (task.isSuccessful()) {
98+
saveDataToFirebaseStorage();
8999
Toast.makeText(getApplicationContext(), "Profile Updated", Toast.LENGTH_LONG).show();
90100
Intent intent = new Intent(details.this, MainActivity.class);
91101
startActivity(intent);
@@ -108,7 +118,42 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
108118
Glide.with(profile_img.getContext())
109119
.load(profile_pic_url)
110120
.centerCrop().placeholder(R.drawable.profile_placeholder).into(profile_img);
121+
111122
}
112123
super.onActivityResult(requestCode, resultCode, data);
113124
}
125+
126+
private void saveDataToFirebaseStorage(){
127+
128+
Uri selectedImageUri = profile_pic_url;
129+
130+
// Get a reference to store file at chat_photos/<FILENAME>
131+
StorageReference photoRef = mRef.child(user_name).child(selectedImageUri.getLastPathSegment());
132+
133+
// Toast.makeText(MainActivity.this,selectedImageUri.toString(),Toast.LENGTH_SHORT).show();
134+
135+
// Upload file to Firebase Storage
136+
photoRef.putFile(selectedImageUri)
137+
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
138+
@Override
139+
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
140+
//Get a Url to the uploaded content
141+
Task<Uri> downloadUrl = taskSnapshot.getStorage().getDownloadUrl();
142+
143+
downloadUrl.addOnSuccessListener(new OnSuccessListener<Uri>() {
144+
@Override
145+
public void onSuccess(Uri uri) {
146+
Toast.makeText(getApplicationContext(),"Profile Updated Successfully",Toast.LENGTH_LONG).show();
147+
}
148+
});
149+
150+
}
151+
})
152+
.addOnFailureListener(new OnFailureListener() {
153+
@Override
154+
public void onFailure(@NonNull Exception e) {
155+
Toast.makeText(getApplicationContext(),"Unsucessful Try Later",Toast.LENGTH_SHORT).show();
156+
}
157+
});
158+
}
114159
}

0 commit comments

Comments
 (0)