Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.98 KB | None | 0 0
  1. package com.example.android.debateapp.Message;
  2.  
  3.  
  4. public class Message {
  5.  
  6. private String ChatMessage;
  7. private String mChatImageURL;
  8.  
  9.  
  10. public Message(){
  11. //Empty constructor needed
  12. }
  13.  
  14. public Message(String ChatMessage, String mChatImageURL ){
  15. this.ChatMessage = ChatMessage;
  16. this.mChatImageURL = mChatImageURL;
  17. }
  18.  
  19. public String getChatMessage() {
  20. return ChatMessage;
  21. }
  22.  
  23. public String getmChatImageURL() {
  24.  
  25. return mChatImageURL;
  26. }
  27.  
  28. }
  29.  
  30. public class MessageRecyclerAdapter extends FirestoreRecyclerAdapter<Message, MessageRecyclerAdapter.MessageHolder> {
  31.  
  32.  
  33. public MessageRecyclerAdapter(@NonNull FirestoreRecyclerOptions<Message> options) {
  34. super(options);
  35.  
  36. }
  37.  
  38. @Override
  39. protected void onBindViewHolder(@NonNull MessageHolder holder, int position, @NonNull Message model) {
  40.  
  41. holder.ChatMessage.setText(model.getChatMessage());
  42.  
  43.  
  44. }
  45.  
  46. @NonNull
  47. @Override
  48. public MessageHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
  49.  
  50. View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.message_item, viewGroup, false);
  51.  
  52. return new MessageHolder(v);
  53. }
  54.  
  55. class MessageHolder extends RecyclerView.ViewHolder{
  56.  
  57. TextView ChatMessage;
  58. CircleImageView MessageProfilePicture;
  59. ImageView ChatMessageImage;
  60.  
  61.  
  62.  
  63. public MessageHolder(@NonNull View itemView) {
  64. super(itemView);
  65.  
  66. ChatMessage = itemView.findViewById(R.id.Message_Chat_Content);
  67. MessageProfilePicture = itemView.findViewById(R.id.Chat_Profile_picture);
  68. ChatMessageImage = itemView.findViewById(R.id.chat_Message_image);
  69.  
  70. }
  71.  
  72. public void setChatImage(final String downloadUri) {
  73.  
  74. ChatMessageImage = itemView.findViewById(R.id.chat_Message_image);
  75. Glide.with(itemView.getContext()).load(downloadUri).into(ChatMessageImage);
  76.  
  77. }
  78. }
  79. }
  80.  
  81. public class ChatActivity extends AppCompatActivity {
  82.  
  83. public static final int DEFAULT_MSG_LENGTH_LIMIT = 1000;
  84. private static final int GALLERY_PICK = 1;
  85.  
  86. private ListView mMessageListView;
  87. private ImageButton mPhotoPickerButton;
  88. private EditText mMessageEditText;
  89. private Button mSendButton;
  90. private String mUsername;
  91. private ChildEventListener mChildEventListner;
  92. private ValueEventListener mValueEventListner;
  93. private FirebaseUser mCurrentUser;
  94.  
  95. private StorageReference storageReference;
  96.  
  97. private StorageReference mChatPhotosStorageReference;
  98. private Context mContext;
  99.  
  100. private MessageRecyclerAdapter adapter;
  101.  
  102. private ImageView chatimage;
  103.  
  104. private String TESTmessagedoc;
  105.  
  106. private ImageView chatProfile;
  107.  
  108.  
  109. //FIRE STORE
  110. private DocumentReference mMessageDoc;
  111. private FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
  112. private CollectionReference collectionReference = (firebaseFirestore).collection("Messages");
  113. private CollectionReference colRef;
  114.  
  115. private static final String TAG = ChatActivity.class.getName();
  116.  
  117.  
  118. @Override
  119. protected void onCreate(@Nullable Bundle savedInstanceState) {
  120. super.onCreate(savedInstanceState);
  121. setContentView(R.layout.chat_activity);
  122.  
  123. storageReference = FirebaseStorage.getInstance().getReference();
  124.  
  125. chatProfile = findViewById(R.id.Chat_Profile_picture);
  126.  
  127. //chatimage = findViewById(R.id.photoImageView);
  128.  
  129. final String messageDoc = getIntent().getStringExtra("Message_ID");
  130.  
  131. TESTmessagedoc = messageDoc;
  132.  
  133. mMessageDoc = firebaseFirestore.collection("Messages").document(messageDoc);
  134.  
  135.  
  136. colRef = firebaseFirestore.collection("Messages").document(messageDoc).collection("chats");
  137.  
  138. mPhotoPickerButton = (ImageButton) findViewById(R.id.photoPickerButton);
  139. mMessageEditText = (EditText) findViewById(R.id.messageEditText);
  140. mSendButton = (Button) findViewById(R.id.sendButton);
  141.  
  142. mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
  143. final String current_uid = mCurrentUser.getUid();
  144.  
  145. // ImagePickerButton shows an image picker to upload a image for a message
  146. mPhotoPickerButton.setOnClickListener(new View.OnClickListener() {
  147. @Override
  148. public void onClick(View view) {
  149. Intent galleryIntent = new Intent();
  150. galleryIntent.setType("image/*");
  151. galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
  152.  
  153. startActivityForResult(Intent.createChooser(galleryIntent, "Select Image"), GALLERY_PICK);
  154. }
  155. });
  156.  
  157.  
  158. setUpRecyclerView();
  159.  
  160. // Enable Send button when there's text to send
  161. mMessageEditText.addTextChangedListener(new TextWatcher() {
  162. @Override
  163. public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
  164. }
  165.  
  166. @Override
  167. public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
  168. if (charSequence.toString().trim().length() > 0) {
  169. mSendButton.setEnabled(true);
  170. } else {
  171. mSendButton.setEnabled(false);
  172. }
  173. }
  174.  
  175. @Override
  176. public void afterTextChanged(Editable editable) {
  177. }
  178. });
  179. mMessageEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(DEFAULT_MSG_LENGTH_LIMIT)});
  180.  
  181. mSendButton.setOnClickListener(new View.OnClickListener() {
  182. @Override
  183. public void onClick(View view) {
  184.  
  185. String MessageText = mMessageEditText.getText().toString();
  186.  
  187.  
  188. Map<String, Object> chatMap = new HashMap<>();
  189. chatMap.put("ChatMessage", MessageText);
  190. chatMap.put("User ID", current_uid);
  191. chatMap.put("Timestamp", FieldValue.serverTimestamp());
  192.  
  193. firebaseFirestore.collection("Messages")
  194. .document(messageDoc).collection("chats")
  195. .add(chatMap)
  196. .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
  197. @Override
  198. public void onSuccess(DocumentReference documentReference) {
  199.  
  200. }
  201. })
  202. .addOnFailureListener(new OnFailureListener() {
  203. @Override
  204. public void onFailure(@NonNull Exception e) {
  205.  
  206. }
  207. });
  208.  
  209.  
  210. // Clear input box
  211. mMessageEditText.setText("");
  212. }
  213. });
  214.  
  215. }
  216.  
  217. private void setUpRecyclerView() {
  218. Query query = colRef.orderBy("Timestamp", Query.Direction.ASCENDING);
  219.  
  220. FirestoreRecyclerOptions<Message> options = new FirestoreRecyclerOptions.Builder<Message>()
  221. .setQuery(query, Message.class)
  222. .build();
  223.  
  224. adapter = new MessageRecyclerAdapter(options);
  225.  
  226. RecyclerView recyclerView = findViewById(R.id.recycler_message_view);
  227. recyclerView.setHasFixedSize(true);
  228. recyclerView.setLayoutManager(new LinearLayoutManager(this));
  229. recyclerView.setAdapter(adapter);
  230.  
  231. }
  232.  
  233. @Override
  234. protected void onStart() {
  235. super.onStart();
  236. adapter.startListening();
  237. }
  238.  
  239. @Override
  240. protected void onStop() {
  241. super.onStop();
  242. adapter.stopListening();
  243. }
  244.  
  245.  
  246. @Override
  247. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  248. super.onActivityResult(requestCode, resultCode, data);
  249.  
  250. if (requestCode == GALLERY_PICK && resultCode == RESULT_OK) {
  251.  
  252. String imageUri = data.getDataString();
  253.  
  254. CropImage.activity(Uri.parse(imageUri))
  255. .setAspectRatio(1, 1)
  256. .start(this);
  257.  
  258. }
  259.  
  260. if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
  261. CropImage.ActivityResult result = CropImage.getActivityResult(data);
  262. if (resultCode == RESULT_OK) {
  263.  
  264.  
  265. Uri resultUri = result.getUri();
  266.  
  267. final String current_user_id = mCurrentUser.getUid();
  268. final String randomName = UUID.randomUUID().toString();
  269.  
  270.  
  271. final StorageReference filepath = storageReference.child("chat_photos").child(randomName + ".JPG");
  272. filepath.putFile(resultUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  273. @Override
  274. public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  275.  
  276. filepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
  277. @Override
  278. public void onSuccess(Uri uri) {
  279.  
  280. final String downloadUrl = uri.toString();
  281.  
  282. Map<String, String> newImageUrl = new HashMap<>();
  283. newImageUrl.put("image", downloadUrl);
  284.  
  285.  
  286. firebaseFirestore.collection("Messages").document(TESTmessagedoc).collection("chats")
  287. .add(newImageUrl)
  288. .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
  289. @Override
  290. public void onSuccess(DocumentReference documentReference) {
  291.  
  292. /*
  293. filepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
  294. @Override
  295. public void onSuccess(Uri uri) {
  296.  
  297. //The download url
  298. final String downloadUrl =
  299. uri.toString();
  300. Log.d("tag", downloadUrl);
  301. if (!downloadUrl.equals("default")) {
  302. // I changed this to glide since i thought picasso was the problem.
  303. // Picasso still should work. Glide is recommended by google tho
  304. Glide.with(getApplicationContext()).load(downloadUrl).into(chatProfile);
  305. }
  306.  
  307. }
  308. });
  309. */
  310.  
  311. }
  312. }).addOnFailureListener(new OnFailureListener() {
  313. @Override
  314. public void onFailure(@NonNull Exception e) {
  315. Toast.makeText(getApplicationContext(), "There was some error in saving Changes.", Toast.LENGTH_LONG).show();
  316. }
  317.  
  318. });
  319. }
  320. });
  321.  
  322.  
  323.  
  324. }
  325. });
  326. }
  327. }
  328.  
  329. }}
  330.  
  331. @Override
  332. protected void onBindViewHolder(@NonNull MessageHolder holder, int position, @NonNull Message model) {
  333.  
  334. holder.ChatMessage.setText(model.getChatMessage());
  335.  
  336. holder.setChatImage(model.getmChatImageURL());
  337.  
  338. }
  339.  
  340. @Override
  341. protected void onBindViewHolder(@NonNull MessageHolder holder, int position, @NonNull Message model) {
  342.  
  343. holder.ChatMessage.setText(model.getChatMessage());
  344. holder.setChatImage(imageUrl)
  345.  
  346. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement