Proper URL parsing, label redesign and other improvements. (#564)
Final improvements. Fixing reply mention. Do NOT use "instanceUrlRaw" as of now. Minor fixes Merge remote-tracking branch 'remotes/main/master' into login-fix URL parsing, label and other improvements. Co-authored-by: opyale <opyale@noreply.gitea.io> Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/564 Reviewed-by: M M Arif <mmarif@noreply.codeberg.org>
This commit is contained in:
@@ -22,6 +22,7 @@ import com.tooltip.Tooltip;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.clients.RetrofitClient;
|
||||
import org.mian.gitnex.helpers.NetworkObserver;
|
||||
import org.mian.gitnex.helpers.PathsHelper;
|
||||
import org.mian.gitnex.helpers.SnackBar;
|
||||
import org.mian.gitnex.helpers.UrlHelper;
|
||||
import org.mian.gitnex.helpers.Version;
|
||||
@@ -30,10 +31,11 @@ import org.mian.gitnex.models.UserInfo;
|
||||
import org.mian.gitnex.models.UserTokens;
|
||||
import org.mian.gitnex.util.AppUtil;
|
||||
import org.mian.gitnex.util.TinyDB;
|
||||
import java.net.URL;
|
||||
import java.net.URI;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import io.mikael.urlbuilder.UrlBuilder;
|
||||
import okhttp3.Credentials;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
@@ -166,17 +168,23 @@ public class LoginActivity extends BaseActivity {
|
||||
String loginToken = loginTokenCode.getText().toString().trim();
|
||||
|
||||
Protocol protocol = (Protocol) protocolSpinner.getSelectedItem();
|
||||
URL rawInstanceUrl = new URL(UrlHelper.fixScheme(instanceUrlET.getText().toString(), protocol.name().toLowerCase()));
|
||||
LoginType loginType = (loginMethod.getCheckedRadioButtonId() == R.id.loginUsernamePassword) ? LoginType.BASIC : LoginType.TOKEN;
|
||||
|
||||
String portAppendix = (rawInstanceUrl.getPort() > 0) ? ":" + rawInstanceUrl.getPort() : "";
|
||||
String instanceUrlWithProtocol = protocol.name().toLowerCase() + "://" + rawInstanceUrl.getHost() + portAppendix;
|
||||
String instanceUrl = instanceUrlWithProtocol + "/api/v1/";
|
||||
URI rawInstanceUrl = UrlBuilder.fromString(UrlHelper.fixScheme(instanceUrlET.getText().toString(), "http"))
|
||||
.toUri();
|
||||
|
||||
URI instanceUrlWithProtocol = UrlBuilder.fromUri(rawInstanceUrl)
|
||||
.withScheme(protocol.name().toLowerCase())
|
||||
.toUri();
|
||||
|
||||
URI instanceUrl = UrlBuilder.fromUri(instanceUrlWithProtocol)
|
||||
.withPath(PathsHelper.join(instanceUrlWithProtocol.getPath(), "/api/v1/"))
|
||||
.toUri();
|
||||
|
||||
tinyDB.putString("loginType", loginType.name().toLowerCase());
|
||||
tinyDB.putString("instanceUrlRaw", rawInstanceUrl.getHost());
|
||||
tinyDB.putString("instanceUrl", instanceUrl);
|
||||
tinyDB.putString("instanceUrlWithProtocol", instanceUrlWithProtocol);
|
||||
tinyDB.putString("instanceUrlRaw", instanceUrlET.getText().toString());
|
||||
tinyDB.putString("instanceUrl", instanceUrl.toString());
|
||||
tinyDB.putString("instanceUrlWithProtocol", instanceUrlWithProtocol.toString());
|
||||
|
||||
if(instanceUrlET.getText().toString().equals("")) {
|
||||
|
||||
@@ -188,7 +196,13 @@ public class LoginActivity extends BaseActivity {
|
||||
|
||||
if(loginType == LoginType.BASIC) {
|
||||
|
||||
int loginOTP = (otpCode.getText().toString().length() == 6) ? Integer.parseInt(otpCode.getText().toString().trim()) : 0;
|
||||
if(otpCode.length() != 0 && otpCode.length() != 6) {
|
||||
|
||||
SnackBar.warning(ctx, layoutView, getResources().getString(R.string.loginOTPTypeError));
|
||||
enableProcessButton();
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if(rawInstanceUrl.getUserInfo() != null) {
|
||||
|
||||
@@ -197,8 +211,6 @@ public class LoginActivity extends BaseActivity {
|
||||
|
||||
}
|
||||
|
||||
tinyDB.putString("loginUid", loginUid);
|
||||
|
||||
if(loginUid.equals("")) {
|
||||
|
||||
SnackBar.warning(ctx, layoutView, getResources().getString(R.string.emptyFieldUsername));
|
||||
@@ -215,7 +227,10 @@ public class LoginActivity extends BaseActivity {
|
||||
|
||||
}
|
||||
|
||||
versionCheck(instanceUrl, loginUid, loginPass, loginOTP, loginToken, 1);
|
||||
int loginOTP = (otpCode.length() > 0) ? Integer.parseInt(otpCode.getText().toString().trim()) : 0;
|
||||
tinyDB.putString("loginUid", loginUid);
|
||||
|
||||
versionCheck(instanceUrl.toString(), loginUid, loginPass, loginOTP, loginToken, 1);
|
||||
|
||||
}
|
||||
else {
|
||||
@@ -228,7 +243,7 @@ public class LoginActivity extends BaseActivity {
|
||||
|
||||
}
|
||||
|
||||
versionCheck(instanceUrl, loginUid, loginPass, 123, loginToken, 2);
|
||||
versionCheck(instanceUrl.toString(), loginUid, loginPass, 123, loginToken, 2);
|
||||
|
||||
}
|
||||
|
||||
@@ -358,8 +373,8 @@ public class LoginActivity extends BaseActivity {
|
||||
switch(response.code()) {
|
||||
|
||||
case 200:
|
||||
tinyDB.putBoolean("loggedInMode", true);
|
||||
assert userDetails != null;
|
||||
tinyDB.putBoolean("loggedInMode", true);
|
||||
tinyDB.putString(userDetails.getLogin() + "-token", loginToken);
|
||||
tinyDB.putString("loginUid", userDetails.getLogin());
|
||||
tinyDB.putString("userLogin", userDetails.getUsername());
|
||||
@@ -423,8 +438,8 @@ public class LoginActivity extends BaseActivity {
|
||||
|
||||
if(response.code() == 200) {
|
||||
|
||||
boolean setTokenFlag = false;
|
||||
assert userTokens != null;
|
||||
boolean setTokenFlag = false;
|
||||
|
||||
if(userTokens.size() > 0) { // FIXME This is in need of a refactor, but i don't understand what the code is used for.
|
||||
|
||||
@@ -494,9 +509,9 @@ public class LoginActivity extends BaseActivity {
|
||||
switch(response.code()) {
|
||||
|
||||
case 200:
|
||||
assert userDetails != null;
|
||||
tinyDB.remove("loginPass");
|
||||
tinyDB.putBoolean("loggedInMode", true);
|
||||
assert userDetails != null;
|
||||
tinyDB.putString("userLogin", userDetails.getUsername());
|
||||
tinyDB.putString(loginUid + "-token", newToken.getSha1());
|
||||
tinyDB.putString(loginUid + "-token-last-eight", appUtil.getLastCharactersOfWord(newToken.getSha1(), 8));
|
||||
|
||||
@@ -515,7 +515,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
tinyDb.putString("userLang", userDetails.getLang());
|
||||
}
|
||||
else {
|
||||
tinyDb.putString("userLang", "...");
|
||||
tinyDb.putString("userLang", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -526,7 +526,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
}
|
||||
else {
|
||||
|
||||
String toastError = getResources().getString(R.string.genericApiStatusError) + String.valueOf(response.code());
|
||||
String toastError = getResources().getString(R.string.genericApiStatusError) + response.code();
|
||||
Toasty.info(ctx, toastError);
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,13 @@ import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.helpers.PathsHelper;
|
||||
import org.mian.gitnex.helpers.Toasty;
|
||||
import org.mian.gitnex.util.TinyDB;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import io.mikael.urlbuilder.UrlBuilder;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
@@ -18,20 +24,28 @@ public class OpenRepoInBrowserActivity extends AppCompatActivity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
appCtx = getApplicationContext();
|
||||
super.onCreate(savedInstanceState);
|
||||
appCtx = getApplicationContext();
|
||||
TinyDB tinyDb = new TinyDB(appCtx);
|
||||
|
||||
TinyDB tinyDb = new TinyDB(appCtx);
|
||||
String instanceUrlWithProtocol = "https://" + tinyDb.getString("instanceUrlRaw");
|
||||
if (!tinyDb.getString("instanceUrlWithProtocol").isEmpty()) {
|
||||
instanceUrlWithProtocol = tinyDb.getString("instanceUrlWithProtocol");
|
||||
}
|
||||
try {
|
||||
|
||||
String repoFullNameBrowser = getIntent().getStringExtra("repoFullNameBrowser");
|
||||
Uri url = Uri.parse(instanceUrlWithProtocol + "/" + repoFullNameBrowser);
|
||||
Intent i = new Intent(Intent.ACTION_VIEW, url);
|
||||
startActivity(i);
|
||||
finish();
|
||||
URI instanceUrl = new URI(tinyDb.getString("instanceUrlWithProtocol"));
|
||||
|
||||
String browserPath = PathsHelper.join(instanceUrl.getPath(), getIntent().getStringExtra("repoFullNameBrowser"));
|
||||
|
||||
String browserUrl = UrlBuilder.fromUri(instanceUrl)
|
||||
.withPath(browserPath)
|
||||
.toString();
|
||||
|
||||
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(browserUrl));
|
||||
startActivity(i);
|
||||
finish();
|
||||
|
||||
}
|
||||
catch(URISyntaxException e) {
|
||||
Toasty.error(appCtx, getString(R.string.genericError));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user