2019-05-13 03:19:17 +02:00
|
|
|
package org.mercury_im.messenger.ui;
|
2019-04-14 18:12:04 +02:00
|
|
|
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.os.AsyncTask;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.support.design.widget.FloatingActionButton;
|
|
|
|
import android.support.v7.app.AppCompatActivity;
|
|
|
|
import android.support.v7.widget.Toolbar;
|
|
|
|
import android.view.Menu;
|
|
|
|
import android.view.MenuItem;
|
|
|
|
import android.view.View;
|
|
|
|
|
|
|
|
import org.jxmpp.jid.impl.JidCreate;
|
2019-05-13 03:19:17 +02:00
|
|
|
import org.mercury_im.messenger.MercuryImApplication;
|
|
|
|
import org.mercury_im.messenger.R;
|
|
|
|
import org.mercury_im.messenger.persistence.database.AppDatabase;
|
|
|
|
import org.mercury_im.messenger.persistence.database.model.AccountModel;
|
|
|
|
import org.mercury_im.messenger.persistence.database.model.RosterEntryModel;
|
|
|
|
import org.mercury_im.messenger.persistence.repository.account.AccountRepository;
|
|
|
|
import org.mercury_im.messenger.persistence.repository.roster.RosterEntryRepository;
|
|
|
|
import org.mercury_im.messenger.ui.chat.ChatActivity;
|
|
|
|
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
|
|
|
|
public RosterEntryRepository rosterEntryRepository;
|
|
|
|
|
|
|
|
@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);
|
|
|
|
fab.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View view) {
|
|
|
|
AccountModel account = new AccountModel();
|
|
|
|
account.setJid(JidCreate.entityBareFromOrThrowUnchecked("alice@wonderland.lit"));
|
|
|
|
account.setPassword("swordfish");
|
2019-05-04 00:27:02 +02:00
|
|
|
|
2019-04-14 18:12:04 +02:00
|
|
|
accountRepository.insertAccount(account);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
@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-04-14 18:12:04 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return super.onOptionsItemSelected(item);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void addRosterEntry(AppDatabase database, RosterEntryModel rosterEntry) {
|
|
|
|
new addRosterEntry(database).execute(rosterEntry);
|
|
|
|
}
|
|
|
|
|
|
|
|
private static class ifNoAccountsThen extends AsyncTask<Runnable, Void, Void> {
|
|
|
|
|
|
|
|
private final AppDatabase database;
|
|
|
|
|
|
|
|
public ifNoAccountsThen(AppDatabase database) {
|
|
|
|
this.database = database;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected Void doInBackground(Runnable... runnables) {
|
2019-05-04 00:27:02 +02:00
|
|
|
List<AccountModel> accounts = database.accountDao().getAllAccounts().getValue();
|
2019-04-14 18:12:04 +02:00
|
|
|
if (accounts == null || accounts.size() == 0) {
|
|
|
|
runnables[0].run();
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private static class addRosterEntry extends AsyncTask<RosterEntryModel, Void, Void> {
|
|
|
|
|
|
|
|
private AppDatabase database;
|
|
|
|
|
|
|
|
public addRosterEntry(AppDatabase database) {
|
|
|
|
this.database = database;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected Void doInBackground(RosterEntryModel... rosterEntryModels) {
|
|
|
|
database.rosterEntryDao().addRosterEntry(rosterEntryModels[0]);
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|