mercredi 12 août 2020

Android - If and else statement getting executed together

I am facing a weird problem, My if and else both are getting executed and I don't know why.

Here is the Code

    public class ChatRoom extends AppCompatActivity {

    TextView textviewRoomName;
    RecyclerView recyclerView;
    DatabaseReference databaseReference, userDetails, dbmessage;
    EditText editTextMessage;
    ImageButton sendMessage;
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

    List<RoomChatModel> messages;
    RoomAdapter adapter;

    String roomID, senderName, roomName, createrID;
    long backPressedTime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_room_chat);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        toolbar.setTitle("");
        toolbar.setSubtitle("");

        intialiseVariables();

        Intent intent = getIntent();
        roomID = intent.getStringExtra("roomId");
        Log.d("roomId", roomID);

        databaseReference = FirebaseDatabase.getInstance().getReference("Rooms").
                child(roomID).child("GroupInfo");
        dbmessage = FirebaseDatabase.getInstance().getReference("Rooms").
                child(roomID);

        DatabaseReference check = FirebaseDatabase.getInstance().getReference("Rooms");

        check.child(roomID).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                Log.d("called", roomID);
                if (snapshot.exists()) {
                    Log.d("exist",  "true" );
                }
                else {
                    Toast.makeText(ChatRoom.this, "Room has Been Disbaned, Going back.",
                            Toast.LENGTH_LONG).show();
                    Intent intent1 = new Intent(ChatRoom.this, MainScreen.class);
                    startActivity(intent1);
                    Log.d("else", "called");
                }
     Log.d("Finised:","true");
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });

        userDetails = FirebaseDatabase.getInstance().getReference("Users").child(user.getUid());

        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                if (snapshot.exists()) {
                    roomName = snapshot.child("roomName").getValue().toString();
                    createrID = snapshot.child("createdBy").getValue().toString();
                    String roomCode = snapshot.child("roomCode").getValue().toString();
                    Log.d("Room Name:", roomName);
                    textviewRoomName.setText(roomName + " ( " + roomCode + " )");
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });
        userDetails.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                senderName = snapshot.child("username").getValue().toString();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });


        sendMessage.setOnClickListener(v -> {
            sendMessage();
        });

        readMessage();
    }

    private void intialiseVariables() {

        textviewRoomName = findViewById(R.id.roomName);
        editTextMessage = findViewById(R.id.messageText);
        sendMessage = findViewById(R.id.sendMessage);

        recyclerView = findViewById(R.id.RoomrecyclerView);
        recyclerView.setHasFixedSize(true);
        LinearLayoutManager linearLayout = new LinearLayoutManager(getApplicationContext());
        linearLayout.setStackFromEnd(true);
        recyclerView.setLayoutManager(linearLayout);

        messages = new ArrayList<>();

    }

    private void sendMessage() {
        String message = editTextMessage.getText().toString();
        String messageId = databaseReference.push().getKey();
        RoomChatModel chatModel = new RoomChatModel(message, user.getUid(), senderName, "text", messageId);
        dbmessage.child("Messages").child(messageId).setValue(chatModel);
        editTextMessage.setText("");
    }

    private void readMessage()  {
        dbmessage.child("Messages").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                messages.clear();
                for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                    RoomChatModel chatModel = dataSnapshot.getValue(RoomChatModel.class);
                    messages.add(chatModel);
                }
                adapter = new RoomAdapter(ChatRoom.this, messages);
                recyclerView.setAdapter(adapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });
    }

    @Override
    public void onBackPressed() {
        if (createrID.equals(user.getUid())) {
            if (backPressedTime + 2000 > System.currentTimeMillis()) {
                dbmessage.removeValue();
                Intent intent = new Intent(this, MainScreen.class);
                startActivity(intent);
                Toast.makeText(this, "Room Closed", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "You are The Admin of this room. If you leave room will" +
                        "be close", Toast.LENGTH_LONG).show();
            }
        } else {
            if (backPressedTime + 2000 > System.currentTimeMillis()) {
                Intent intent = new Intent(this, MainScreen.class);
                startActivity(intent);
                dbmessage.child("Members").child(user.getUid()).removeValue();
            } else {
                Toast.makeText(this, "Press back again to Exit.", Toast.LENGTH_SHORT).show();
            }

            backPressedTime = System.currentTimeMillis();
        }


        backPressedTime = System.currentTimeMillis();
    }
}

And in My Logcat it is showing true that snapshot exists. And after that the else part work and It moves me to another activity.

enter image description here enter image description here

2020-08-12 14:38:17.739 27530-27530/com.mycompany.newchatapp D/Finised:: true
2020-08-12 14:38:17.818 27530-27530/com.mycompany.newchatapp D/Finised:: true
2020-08-12 14:38:18.016 27530-27530/com.mycompany.newchatapp D/Finised:: true
2020-08-12 14:38:18.031 27530-27530/com.mycompany.newchatapp D/Finised:: true

Any Suggestions?

Aucun commentaire:

Enregistrer un commentaire