2019-06-03 23:25:05 +02:00
|
|
|
package org.mian.gitnex.activities;
|
|
|
|
|
2020-04-02 02:59:00 +02:00
|
|
|
import android.app.Activity;
|
2019-06-03 23:25:05 +02:00
|
|
|
import android.content.ActivityNotFoundException;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.Intent;
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import com.google.android.material.navigation.NavigationView;
|
2020-01-07 13:27:05 +01:00
|
|
|
import androidx.appcompat.widget.Toolbar;
|
2019-06-03 23:25:05 +02:00
|
|
|
import androidx.core.view.GravityCompat;
|
|
|
|
import androidx.drawerlayout.widget.DrawerLayout;
|
|
|
|
import androidx.appcompat.app.ActionBarDrawerToggle;
|
2020-01-01 21:03:53 +01:00
|
|
|
import androidx.fragment.app.Fragment;
|
|
|
|
import androidx.fragment.app.FragmentManager;
|
2020-03-21 19:52:52 +01:00
|
|
|
import android.content.pm.PackageInfo;
|
|
|
|
import android.content.pm.PackageManager;
|
2020-01-01 21:03:53 +01:00
|
|
|
import android.graphics.Typeface;
|
2019-06-03 23:25:05 +02:00
|
|
|
import android.net.Uri;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.util.Log;
|
|
|
|
import android.view.MenuItem;
|
|
|
|
import android.view.View;
|
|
|
|
import android.widget.ImageView;
|
|
|
|
import android.widget.TextView;
|
|
|
|
import com.squareup.picasso.NetworkPolicy;
|
|
|
|
import org.mian.gitnex.R;
|
2020-04-01 13:26:32 +02:00
|
|
|
import org.mian.gitnex.clients.PicassoService;
|
2019-06-03 23:25:05 +02:00
|
|
|
import org.mian.gitnex.clients.RetrofitClient;
|
|
|
|
import org.mian.gitnex.fragments.AboutFragment;
|
2019-10-05 01:10:40 +02:00
|
|
|
import org.mian.gitnex.fragments.ExploreRepositoriesFragment;
|
2019-06-03 23:25:05 +02:00
|
|
|
import org.mian.gitnex.fragments.MyRepositoriesFragment;
|
2020-03-16 20:28:03 +01:00
|
|
|
import org.mian.gitnex.fragments.BottomSheetNavSubMenuFragment;
|
2019-06-03 23:25:05 +02:00
|
|
|
import org.mian.gitnex.fragments.OrganizationsFragment;
|
|
|
|
import org.mian.gitnex.fragments.SettingsFragment;
|
|
|
|
import org.mian.gitnex.fragments.StarredRepositoriesFragment;
|
|
|
|
import org.mian.gitnex.helpers.AlertDialogs;
|
|
|
|
import org.mian.gitnex.helpers.Authorization;
|
2020-03-17 16:56:37 +01:00
|
|
|
import org.mian.gitnex.helpers.ChangeLog;
|
2019-06-03 23:25:05 +02:00
|
|
|
import org.mian.gitnex.helpers.Toasty;
|
2019-11-25 14:12:44 +01:00
|
|
|
import org.mian.gitnex.models.GiteaVersion;
|
2019-06-03 23:25:05 +02:00
|
|
|
import org.mian.gitnex.models.UserInfo;
|
|
|
|
import org.mian.gitnex.util.AppUtil;
|
|
|
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
|
|
|
import org.mian.gitnex.util.TinyDB;
|
|
|
|
import org.mian.gitnex.fragments.ProfileFragment;
|
|
|
|
import org.mian.gitnex.fragments.RepositoriesFragment;
|
|
|
|
import java.util.Objects;
|
|
|
|
import retrofit2.Call;
|
|
|
|
import retrofit2.Callback;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Author M M Arif
|
|
|
|
*/
|
|
|
|
|
2020-01-01 21:03:53 +01:00
|
|
|
public class MainActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener {
|
2019-06-03 23:25:05 +02:00
|
|
|
|
|
|
|
private DrawerLayout drawer;
|
|
|
|
private TextView userFullName;
|
|
|
|
private TextView userEmail;
|
|
|
|
private ImageView userAvatar;
|
2020-01-01 21:03:53 +01:00
|
|
|
private TextView toolbarTitle;
|
2019-06-03 23:25:05 +02:00
|
|
|
final Context ctx = this;
|
2020-01-01 21:03:53 +01:00
|
|
|
private Typeface myTypeface;
|
2019-06-03 23:25:05 +02:00
|
|
|
|
|
|
|
@Override
|
2020-01-01 21:03:53 +01:00
|
|
|
protected int getLayoutResourceId(){
|
|
|
|
return R.layout.activity_main;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onCreate(Bundle savedInstanceState) {
|
2019-06-03 23:25:05 +02:00
|
|
|
|
2020-01-01 21:03:53 +01:00
|
|
|
super.onCreate(savedInstanceState);
|
2019-06-03 23:25:05 +02:00
|
|
|
final TinyDB tinyDb = new TinyDB(getApplicationContext());
|
|
|
|
tinyDb.putBoolean("noConnection", false);
|
|
|
|
//userAvatar = findViewById(R.id.userAvatar);
|
|
|
|
|
|
|
|
final String instanceUrl = tinyDb.getString("instanceUrl");
|
|
|
|
final String loginUid = tinyDb.getString("loginUid");
|
|
|
|
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
|
|
|
|
|
|
|
|
if(tinyDb.getString("dateFormat").isEmpty()) {
|
|
|
|
tinyDb.putString("dateFormat", "pretty");
|
|
|
|
}
|
|
|
|
|
|
|
|
if(tinyDb.getString("codeBlockStr").isEmpty()) {
|
|
|
|
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorLightGreen));
|
|
|
|
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
|
|
|
|
}
|
|
|
|
|
|
|
|
if(tinyDb.getString("enableCounterIssueBadgeInit").isEmpty()) {
|
|
|
|
tinyDb.putBoolean("enableCounterIssueBadge", true);
|
|
|
|
}
|
|
|
|
|
|
|
|
if(tinyDb.getString("homeScreenStr").isEmpty()) {
|
|
|
|
tinyDb.putInt("homeScreenId", 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
String appLocale = tinyDb.getString("locale");
|
|
|
|
AppUtil.setAppLocale(getResources(), appLocale);
|
|
|
|
|
|
|
|
boolean connToInternet = AppUtil.haveNetworkConnection(getApplicationContext());
|
|
|
|
|
|
|
|
if(!tinyDb.getBoolean("loggedInMode")) {
|
2020-04-02 02:59:00 +02:00
|
|
|
logout(this, ctx);
|
2019-06-03 23:25:05 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2020-01-07 13:27:05 +01:00
|
|
|
Toolbar toolbar = findViewById(R.id.toolbar);
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle = toolbar.findViewById(R.id.toolbar_title);
|
|
|
|
|
2020-04-12 17:19:33 +02:00
|
|
|
switch(tinyDb.getInt("customFontId", -1)) {
|
2020-01-01 21:03:53 +01:00
|
|
|
|
2020-04-12 17:19:33 +02:00
|
|
|
case 0:
|
|
|
|
myTypeface = Typeface.createFromAsset(getAssets(), "fonts/roboto.ttf");
|
|
|
|
break;
|
2020-01-01 21:03:53 +01:00
|
|
|
|
2020-04-12 17:19:33 +02:00
|
|
|
case 2:
|
|
|
|
myTypeface = Typeface.createFromAsset(getAssets(), "fonts/sourcecodeproregular.ttf");
|
|
|
|
break;
|
2020-01-01 21:03:53 +01:00
|
|
|
|
2020-04-12 17:19:33 +02:00
|
|
|
default:
|
|
|
|
myTypeface = Typeface.createFromAsset(getAssets(), "fonts/manroperegular.ttf");
|
|
|
|
break;
|
2020-01-01 21:03:53 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
toolbarTitle.setTypeface(myTypeface);
|
2019-06-03 23:25:05 +02:00
|
|
|
setSupportActionBar(toolbar);
|
|
|
|
|
2020-01-01 21:03:53 +01:00
|
|
|
FragmentManager fm = getSupportFragmentManager();
|
|
|
|
Fragment fragmentById = fm.findFragmentById(R.id.fragment_container);
|
|
|
|
if (fragmentById instanceof SettingsFragment) {
|
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleSettings));
|
|
|
|
}
|
|
|
|
else if (fragmentById instanceof MyRepositoriesFragment) {
|
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleMyRepos));
|
|
|
|
}
|
|
|
|
else if (fragmentById instanceof StarredRepositoriesFragment) {
|
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleStarredRepos));
|
|
|
|
}
|
|
|
|
else if (fragmentById instanceof OrganizationsFragment) {
|
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleOrganizations));
|
|
|
|
}
|
|
|
|
else if (fragmentById instanceof ExploreRepositoriesFragment) {
|
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleExplore));
|
|
|
|
}
|
|
|
|
else if (fragmentById instanceof ProfileFragment) {
|
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleProfile));
|
|
|
|
}
|
|
|
|
else if (fragmentById instanceof AboutFragment) {
|
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleAbout));
|
|
|
|
}
|
|
|
|
|
2019-06-03 23:25:05 +02:00
|
|
|
drawer = findViewById(R.id.drawer_layout);
|
|
|
|
NavigationView navigationView = findViewById(R.id.nav_view);
|
|
|
|
navigationView.setNavigationItemSelectedListener(this);
|
2020-03-21 19:52:52 +01:00
|
|
|
final View hView = navigationView.getHeaderView(0);
|
2019-06-03 23:25:05 +02:00
|
|
|
|
|
|
|
ImageView navSubMenu = hView.findViewById(R.id.navSubMenu);
|
|
|
|
navSubMenu.setOnClickListener(new View.OnClickListener() {
|
|
|
|
public void onClick(View v) {
|
2020-03-16 20:28:03 +01:00
|
|
|
BottomSheetNavSubMenuFragment bottomSheet = new BottomSheetNavSubMenuFragment();
|
2019-06-03 23:25:05 +02:00
|
|
|
bottomSheet.show(getSupportFragmentManager(), "adminMenuBottomSheet");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
|
|
|
|
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
|
2020-01-07 13:27:05 +01:00
|
|
|
toggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.darkGreen));
|
2019-06-03 23:25:05 +02:00
|
|
|
drawer.addDrawerListener(toggle);
|
|
|
|
|
|
|
|
drawer.addDrawerListener(new DrawerLayout.DrawerListener() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onDrawerOpened(@NonNull View drawerView) {
|
|
|
|
|
2019-11-13 16:52:49 +01:00
|
|
|
if(tinyDb.getBoolean("noConnection")) {
|
|
|
|
Toasty.info(getApplicationContext(), getResources().getString(R.string.checkNetConnection));
|
|
|
|
tinyDb.putBoolean("noConnection", false);
|
|
|
|
}
|
2019-06-03 23:25:05 +02:00
|
|
|
|
2019-11-13 16:52:49 +01:00
|
|
|
String userEmailNav = tinyDb.getString("userEmail");
|
|
|
|
String userFullNameNav = tinyDb.getString("userFullname");
|
|
|
|
String userAvatarNav = tinyDb.getString("userAvatar");
|
2019-06-03 23:25:05 +02:00
|
|
|
|
2019-11-13 16:52:49 +01:00
|
|
|
userEmail = hView.findViewById(R.id.userEmail);
|
|
|
|
if (!userEmailNav.equals("")) {
|
|
|
|
userEmail.setText(userEmailNav);
|
2020-01-01 21:03:53 +01:00
|
|
|
userEmail.setTypeface(myTypeface);
|
2019-11-13 16:52:49 +01:00
|
|
|
}
|
2019-06-03 23:25:05 +02:00
|
|
|
|
2019-11-13 16:52:49 +01:00
|
|
|
userFullName = hView.findViewById(R.id.userFullname);
|
|
|
|
if (!userFullNameNav.equals("")) {
|
|
|
|
userFullName.setText(userFullNameNav);
|
2020-01-01 21:03:53 +01:00
|
|
|
userFullName.setTypeface(myTypeface);
|
2019-11-13 16:52:49 +01:00
|
|
|
}
|
2019-06-03 23:25:05 +02:00
|
|
|
|
2019-11-13 16:52:49 +01:00
|
|
|
userAvatar = hView.findViewById(R.id.userAvatar);
|
|
|
|
if (!userAvatarNav.equals("")) {
|
2020-04-01 13:26:32 +02:00
|
|
|
PicassoService.getInstance(ctx).get().load(userAvatarNav).networkPolicy(NetworkPolicy.OFFLINE).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(160, 160).centerCrop().into(userAvatar);
|
2019-11-13 16:52:49 +01:00
|
|
|
}
|
2019-06-03 23:25:05 +02:00
|
|
|
|
2019-11-13 16:52:49 +01:00
|
|
|
userAvatar.setOnClickListener(new View.OnClickListener() {
|
|
|
|
public void onClick(View v) {
|
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new ProfileFragment()).commit();
|
|
|
|
drawer.closeDrawers();
|
2019-06-03 23:25:05 +02:00
|
|
|
}
|
2019-11-13 16:52:49 +01:00
|
|
|
});
|
2019-06-03 23:25:05 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onDrawerClosed(@NonNull View drawerView) {
|
|
|
|
// Called when a drawer has settled in a completely closed state.
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onDrawerStateChanged(int newState) {
|
|
|
|
// Called when the drawer motion state changes. The new state will be one of STATE_IDLE, STATE_DRAGGING or STATE_SETTLING.
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
toggle.syncState();
|
|
|
|
|
|
|
|
if(savedInstanceState == null) {
|
|
|
|
if(tinyDb.getInt("homeScreenId") == 0) {
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleMyRepos));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new MyRepositoriesFragment()).commit();
|
|
|
|
navigationView.setCheckedItem(R.id.nav_home);
|
|
|
|
}
|
|
|
|
else if(tinyDb.getInt("homeScreenId") == 1) {
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleStarredRepos));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new StarredRepositoriesFragment()).commit();
|
|
|
|
navigationView.setCheckedItem(R.id.nav_starred_repos);
|
|
|
|
}
|
|
|
|
else if(tinyDb.getInt("homeScreenId") == 2) {
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleOrganizations));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new OrganizationsFragment()).commit();
|
|
|
|
navigationView.setCheckedItem(R.id.nav_organizations);
|
|
|
|
}
|
|
|
|
else if(tinyDb.getInt("homeScreenId") == 3) {
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleRepositories));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new RepositoriesFragment()).commit();
|
|
|
|
navigationView.setCheckedItem(R.id.nav_repositories);
|
|
|
|
}
|
|
|
|
else if(tinyDb.getInt("homeScreenId") == 4) {
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleProfile));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new ProfileFragment()).commit();
|
|
|
|
navigationView.setCheckedItem(R.id.nav_profile);
|
|
|
|
}
|
|
|
|
else {
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleMyRepos));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new MyRepositoriesFragment()).commit();
|
|
|
|
navigationView.setCheckedItem(R.id.nav_home);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!connToInternet) {
|
|
|
|
|
|
|
|
if(!tinyDb.getBoolean("noConnection")) {
|
|
|
|
Toasty.info(getApplicationContext(), getResources().getString(R.string.checkNetConnection));
|
|
|
|
}
|
|
|
|
|
|
|
|
tinyDb.putBoolean("noConnection", true);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
displayUserInfo(instanceUrl, instanceToken, loginUid);
|
2019-11-25 14:12:44 +01:00
|
|
|
giteaVersion(instanceUrl);
|
2019-06-03 23:25:05 +02:00
|
|
|
tinyDb.putBoolean("noConnection", false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2020-03-17 16:56:37 +01:00
|
|
|
// Changelog popup
|
2020-03-21 19:52:52 +01:00
|
|
|
int versionCode = 0;
|
|
|
|
try {
|
|
|
|
PackageInfo packageInfo = getApplicationContext().getPackageManager()
|
|
|
|
.getPackageInfo(getApplicationContext().getPackageName(), 0);
|
|
|
|
versionCode = packageInfo.versionCode;
|
|
|
|
}
|
|
|
|
catch (PackageManager.NameNotFoundException e) {
|
|
|
|
Log.e("changelogDialog", Objects.requireNonNull(e.getMessage()));
|
|
|
|
}
|
|
|
|
|
2020-03-29 16:02:33 +02:00
|
|
|
if (versionCode > tinyDb.getInt("versionCode")) {
|
|
|
|
tinyDb.putInt("versionCode", versionCode);
|
|
|
|
tinyDb.putBoolean("versionFlag", true);
|
2020-03-21 19:52:52 +01:00
|
|
|
ChangeLog changelogDialog = new ChangeLog(this);
|
|
|
|
changelogDialog.showDialog();
|
|
|
|
}
|
2019-06-03 23:25:05 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setActionBarTitle (@NonNull String title) {
|
|
|
|
Objects.requireNonNull(getSupportActionBar()).setTitle(title);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onBackPressed() {
|
|
|
|
|
|
|
|
if(drawer.isDrawerOpen(GravityCompat.START)) {
|
|
|
|
drawer.closeDrawer(GravityCompat.START);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
super.onBackPressed();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
|
|
|
|
|
|
|
|
switch (menuItem.getItemId()) {
|
|
|
|
case R.id.nav_home:
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleMyRepos));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new MyRepositoriesFragment()).commit();
|
|
|
|
break;
|
|
|
|
case R.id.nav_organizations:
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleOrganizations));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new OrganizationsFragment()).commit();
|
|
|
|
break;
|
|
|
|
case R.id.nav_profile:
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleProfile));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new ProfileFragment()).commit();
|
|
|
|
break;
|
|
|
|
case R.id.nav_repositories:
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleRepositories));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new RepositoriesFragment()).commit();
|
2020-01-01 21:03:53 +01:00
|
|
|
|
2019-06-03 23:25:05 +02:00
|
|
|
break;
|
|
|
|
case R.id.nav_settings:
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleSettings));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new SettingsFragment()).commit();
|
|
|
|
break;
|
|
|
|
case R.id.nav_logout:
|
2020-04-02 02:59:00 +02:00
|
|
|
logout(this, ctx);
|
2019-06-03 23:25:05 +02:00
|
|
|
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
|
|
|
|
break;
|
|
|
|
case R.id.nav_about:
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleAbout));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new AboutFragment()).commit();
|
|
|
|
break;
|
|
|
|
case R.id.nav_rate_app:
|
|
|
|
rateThisApp();
|
|
|
|
break;
|
|
|
|
case R.id.nav_starred_repos:
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleStarredRepos));
|
2019-06-03 23:25:05 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new StarredRepositoriesFragment()).commit();
|
|
|
|
break;
|
2019-10-05 01:10:40 +02:00
|
|
|
case R.id.nav_explore:
|
2020-01-01 21:03:53 +01:00
|
|
|
toolbarTitle.setText(getResources().getString(R.string.pageTitleExplore));
|
2019-10-05 01:10:40 +02:00
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new ExploreRepositoriesFragment()).commit();
|
|
|
|
break;
|
|
|
|
|
2019-06-03 23:25:05 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
drawer.closeDrawer(GravityCompat.START);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void rateThisApp() {
|
|
|
|
try {
|
|
|
|
startActivity(new Intent(Intent.ACTION_VIEW,
|
|
|
|
Uri.parse("market://details?id=" + getPackageName())));
|
|
|
|
} catch (ActivityNotFoundException e) {
|
|
|
|
startActivity(new Intent(Intent.ACTION_VIEW,
|
|
|
|
Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName())));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-02 02:59:00 +02:00
|
|
|
public static void logout(Activity activity, Context ctx) {
|
2019-06-03 23:25:05 +02:00
|
|
|
|
2020-04-02 02:59:00 +02:00
|
|
|
TinyDB tinyDb = new TinyDB(ctx.getApplicationContext());
|
2019-06-03 23:25:05 +02:00
|
|
|
tinyDb.putBoolean("loggedInMode", false);
|
|
|
|
tinyDb.remove("basicAuthPassword");
|
|
|
|
tinyDb.putBoolean("basicAuthFlag", false);
|
|
|
|
//tinyDb.clear();
|
2020-04-02 02:59:00 +02:00
|
|
|
activity.finish();
|
|
|
|
ctx.startActivity(new Intent(ctx, LoginActivity.class));
|
2019-06-03 23:25:05 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-11-25 14:12:44 +01:00
|
|
|
private void giteaVersion(final String instanceUrl) {
|
|
|
|
|
|
|
|
final TinyDB tinyDb = new TinyDB(getApplicationContext());
|
|
|
|
|
2020-04-13 10:01:56 +02:00
|
|
|
final String token = "token " + tinyDb.getString(tinyDb.getString("loginUid") + "-token");
|
|
|
|
|
2019-11-25 14:12:44 +01:00
|
|
|
Call<GiteaVersion> callVersion = RetrofitClient
|
|
|
|
.getInstance(instanceUrl, getApplicationContext())
|
|
|
|
.getApiInterface()
|
2020-04-13 10:01:56 +02:00
|
|
|
.getGiteaVersionWithToken(token);
|
2019-11-25 14:12:44 +01:00
|
|
|
|
|
|
|
callVersion.enqueue(new Callback<GiteaVersion>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onResponse(@NonNull final Call<GiteaVersion> callVersion, @NonNull retrofit2.Response<GiteaVersion> responseVersion) {
|
|
|
|
|
|
|
|
if (responseVersion.code() == 200) {
|
|
|
|
|
|
|
|
GiteaVersion version = responseVersion.body();
|
|
|
|
assert version != null;
|
|
|
|
|
|
|
|
tinyDb.putString("giteaVersion", version.getVersion());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2020-03-04 15:54:21 +01:00
|
|
|
public void onFailure(@NonNull Call<GiteaVersion> callVersion, @NonNull Throwable t) {
|
2019-11-25 14:12:44 +01:00
|
|
|
|
|
|
|
Log.e("onFailure-version", t.toString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-06-03 23:25:05 +02:00
|
|
|
private void displayUserInfo(String instanceUrl, String token, String loginUid) {
|
|
|
|
|
|
|
|
final TinyDB tinyDb = new TinyDB(getApplicationContext());
|
|
|
|
|
|
|
|
Call<UserInfo> call = RetrofitClient
|
2019-11-13 16:52:49 +01:00
|
|
|
.getInstance(instanceUrl, getApplicationContext())
|
2019-06-03 23:25:05 +02:00
|
|
|
.getApiInterface()
|
|
|
|
.getUserInfo(Authorization.returnAuthentication(getApplicationContext(), loginUid, token));
|
|
|
|
|
|
|
|
NavigationView navigationView = findViewById(R.id.nav_view);
|
|
|
|
final View hView = navigationView.getHeaderView(0);
|
|
|
|
|
|
|
|
call.enqueue(new Callback<UserInfo>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onResponse(@NonNull Call<UserInfo> call, @NonNull retrofit2.Response<UserInfo> response) {
|
|
|
|
|
|
|
|
UserInfo userDetails = response.body();
|
|
|
|
|
|
|
|
if (response.isSuccessful()) {
|
|
|
|
|
|
|
|
if (response.code() == 200) {
|
|
|
|
|
|
|
|
assert userDetails != null;
|
2019-09-13 17:56:30 +02:00
|
|
|
if(userDetails.getIs_admin() != null) {
|
|
|
|
tinyDb.putBoolean("userIsAdmin", userDetails.getIs_admin());
|
|
|
|
}
|
2019-06-03 23:25:05 +02:00
|
|
|
tinyDb.putString("userLogin", userDetails.getLogin());
|
|
|
|
tinyDb.putInt("userId", userDetails.getId());
|
|
|
|
if(!userDetails.getFullname().equals("")) {
|
|
|
|
tinyDb.putString("userFullname", userDetails.getFullname());
|
|
|
|
}
|
|
|
|
else {
|
2019-11-13 16:52:49 +01:00
|
|
|
tinyDb.putString("userFullname", userDetails.getLogin());
|
2019-06-03 23:25:05 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
tinyDb.putString("userEmail", userDetails.getEmail());
|
|
|
|
tinyDb.putString("userAvatar", userDetails.getAvatar());
|
|
|
|
if(userDetails.getLang() != null) {
|
|
|
|
tinyDb.putString("userLang", userDetails.getLang());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
tinyDb.putString("userLang", "...");
|
|
|
|
}
|
|
|
|
|
|
|
|
userAvatar = hView.findViewById(R.id.userAvatar);
|
|
|
|
if (!Objects.requireNonNull(userDetails).getAvatar().equals("")) {
|
2020-04-01 13:26:32 +02:00
|
|
|
PicassoService.getInstance(ctx).get().load(userDetails.getAvatar()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(160, 160).centerCrop().into(userAvatar);
|
2019-06-03 23:25:05 +02:00
|
|
|
} else {
|
2019-10-01 16:35:51 +02:00
|
|
|
userAvatar.setImageResource(R.mipmap.app_logo_round);
|
2019-06-03 23:25:05 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
userFullName = hView.findViewById(R.id.userFullname);
|
|
|
|
if (!userDetails.getFullname().equals("")) {
|
|
|
|
userFullName.setText(userDetails.getFullname());
|
|
|
|
} else if (!userDetails.getLogin().equals("")) {
|
|
|
|
userFullName.setText(userDetails.getLogin());
|
|
|
|
} else {
|
|
|
|
userFullName.setText("...");
|
|
|
|
}
|
|
|
|
|
|
|
|
userEmail = hView.findViewById(R.id.userEmail);
|
|
|
|
if (!userDetails.getEmail().equals("")) {
|
|
|
|
userEmail.setText(userDetails.getEmail());
|
|
|
|
} else {
|
|
|
|
userEmail.setText("...");
|
|
|
|
}
|
|
|
|
|
|
|
|
userAvatar.setOnClickListener(new View.OnClickListener() {
|
|
|
|
public void onClick(View v) {
|
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
|
|
|
|
new ProfileFragment()).commit();
|
|
|
|
drawer.closeDrawers();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
else if(response.code() == 401) {
|
|
|
|
|
|
|
|
AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle),
|
|
|
|
getResources().getString(R.string.alertDialogTokenRevokedMessage),
|
|
|
|
getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
|
|
|
|
getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
|
|
|
|
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
|
|
|
|
String toastError = getResources().getString(R.string.genericApiStatusError) + String.valueOf(response.code());
|
|
|
|
Toasty.info(getApplicationContext(), toastError);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onFailure(@NonNull Call<UserInfo> call, @NonNull Throwable t) {
|
|
|
|
Log.e("onFailure", t.toString());
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|