Mercury-IM/app/src/main/java/org/mercury_im/messenger/ui/MainActivity.java

112 lines
3.7 KiB
Java
Raw Normal View History

2019-05-13 03:19:17 +02:00
package org.mercury_im.messenger.ui;
2019-04-14 18:12:04 +02:00
2019-05-18 10:06:16 +02:00
import androidx.lifecycle.Observer;
2019-04-14 18:12:04 +02:00
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
2019-05-18 10:06:16 +02:00
import androidx.annotation.Nullable;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
2019-04-14 18:12:04 +02:00
import android.view.Menu;
import android.view.MenuItem;
2019-05-13 03:19:17 +02:00
import org.mercury_im.messenger.MercuryImApplication;
import org.mercury_im.messenger.R;
2019-05-27 21:34:11 +02:00
import org.mercury_im.messenger.persistence.model.AccountModel;
2019-05-19 02:00:33 +02:00
import org.mercury_im.messenger.persistence.room.AppDatabase;
2019-05-27 21:34:11 +02:00
import org.mercury_im.messenger.persistence.room.model.RoomContactModel;
2019-05-19 02:00:33 +02:00
import org.mercury_im.messenger.persistence.repository.AccountRepository;
2019-05-27 21:34:11 +02:00
import org.mercury_im.messenger.persistence.repository.ContactRepository;
2019-05-13 03:19:17 +02:00
import org.mercury_im.messenger.ui.chat.ChatActivity;
2019-06-03 01:16:49 +02:00
import org.mercury_im.messenger.ui.login.AccountsActivity;
2019-05-13 03:19:17 +02:00
import org.mercury_im.messenger.ui.login.LoginActivity;
import org.mercury_im.messenger.ui.settings.SettingsActivity;
2019-04-14 18:12:04 +02:00
import java.util.List;
import javax.inject.Inject;
public class MainActivity extends AppCompatActivity {
2019-05-13 03:19:17 +02:00
2019-04-14 18:12:04 +02:00
@Inject
public AccountRepository accountRepository;
@Inject
2019-05-27 21:34:11 +02:00
public ContactRepository contactRepository;
2019-04-14 18:12:04 +02:00
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
2019-05-13 03:19:17 +02:00
MercuryImApplication.getApplication().getAppComponent().inject(this);
2019-04-14 18:12:04 +02:00
FloatingActionButton fab = findViewById(R.id.fab);
2019-05-18 10:06:16 +02:00
2019-05-27 21:34:11 +02:00
accountRepository.getAllAccountsLive().observe(this, new Observer<List<AccountModel>>() {
2019-05-18 10:06:16 +02:00
@Override
2019-05-27 21:34:11 +02:00
public void onChanged(@Nullable List<AccountModel> accountModels) {
2019-05-18 10:06:16 +02:00
if (accountModels == null || accountModels.isEmpty()) {
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
}
}
});
2019-04-14 18:12:04 +02:00
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
2019-05-04 00:27:02 +02:00
switch (id) {
case R.id.action_settings:
startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
return true;
case R.id.action_login:
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
return true;
case R.id.action_chat:
startActivity(new Intent(getApplicationContext(), ChatActivity.class));
return true;
2019-06-03 01:16:49 +02:00
case R.id.action_accounts:
startActivity(new Intent(getApplicationContext(), AccountsActivity.class));
return true;
2019-04-14 18:12:04 +02:00
}
return super.onOptionsItemSelected(item);
}
2019-05-27 21:34:11 +02:00
private void addRosterEntry(AppDatabase database, RoomContactModel rosterEntry) {
2019-04-14 18:12:04 +02:00
new addRosterEntry(database).execute(rosterEntry);
}
2019-05-27 21:34:11 +02:00
private static class addRosterEntry extends AsyncTask<RoomContactModel, Void, Void> {
2019-04-14 18:12:04 +02:00
private AppDatabase database;
public addRosterEntry(AppDatabase database) {
this.database = database;
}
@Override
2019-05-27 21:34:11 +02:00
protected Void doInBackground(RoomContactModel... rosterEntryModels) {
2019-05-19 02:00:33 +02:00
database.rosterEntryDao().insert(rosterEntryModels[0]);
2019-04-14 18:12:04 +02:00
return null;
}
}
}