Rework Generic Login fragment - close #64

-Add user id
-Go to default login when it's the default domain
This commit is contained in:
Erwan Croze 2017-06-01 12:19:12 +02:00
parent 3724d143cf
commit 1ca5ea2b7a
6 changed files with 63 additions and 49 deletions

View file

@ -51,6 +51,24 @@
android:layout_height="40dp" android:layout_height="40dp"
android:maxLines="1"/> android:maxLines="1"/>
<TextView
android:text="@string/userid"
style="@style/font13"
android:textAllCaps="true"
android:paddingTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/assistant_userid"
android:background="@drawable/resizable_textfield"
android:textColor="@color/colorB"
android:inputType="text|textNoSuggestions"
android:contentDescription="@string/content_description_username_field"
android:layout_width="match_parent"
android:layout_height="40dp"
android:maxLines="1"/>
<TextView <TextView
android:text="@string/password" android:text="@string/password"
style="@style/font13" style="@style/font13"

View file

@ -18,6 +18,7 @@
<!-- Common --> <!-- Common -->
<string name="username">Username</string> <string name="username">Username</string>
<string name="userid">User-id (optional)</string>
<string name="phone_number">Phone number</string> <string name="phone_number">Phone number</string>
<string name="display_name">Display name</string> <string name="display_name">Display name</string>
<string name="password">Password</string> <string name="password">Password</string>

View file

@ -285,7 +285,7 @@ private static AssistantActivity instance;
finish(); finish();
} else if (currentFragment == AssistantFragmentsEnum.COUNTRY_CHOOSER){ } else if (currentFragment == AssistantFragmentsEnum.COUNTRY_CHOOSER){
if(lastFragment.equals(AssistantFragmentsEnum.LINPHONE_LOGIN)){ if(lastFragment.equals(AssistantFragmentsEnum.LINPHONE_LOGIN)){
displayLoginLinphone(); displayLoginLinphone(null, null);
} else { } else {
displayCreateAccount(); displayCreateAccount();
} }
@ -347,10 +347,6 @@ private static AssistantActivity instance;
} }
} }
private void logIn(String username, String password, String ha1, String prefix, String domain, TransportType transport) {
saveCreatedAccount(username, password, ha1, prefix, domain, transport);
}
public void configureLinphoneProxyConfig(LinphoneAccountCreator accountCreator) { public void configureLinphoneProxyConfig(LinphoneAccountCreator accountCreator) {
LinphoneCore lc = LinphoneManager.getLc(); LinphoneCore lc = LinphoneManager.getLc();
LinphoneProxyConfig proxyConfig = lc.createProxyConfig(); LinphoneProxyConfig proxyConfig = lc.createProxyConfig();
@ -417,12 +413,8 @@ private static AssistantActivity instance;
configureLinphoneProxyConfig(accountCreator); configureLinphoneProxyConfig(accountCreator);
} }
public void genericLogIn(String username, String password, String prefix, String domain, TransportType transport) { public void genericLogIn(String username, String userid, String password, String prefix, String domain, TransportType transport) {
if (accountCreated) { saveCreatedAccount(username, userid, password, null, prefix, domain, transport);
retryLogin(username, password, prefix, domain, transport);
} else {
logIn(username, password, null, prefix, domain, transport);
}
} }
private void display(AssistantFragmentsEnum fragment) { private void display(AssistantFragmentsEnum fragment) {
@ -431,7 +423,7 @@ private static AssistantActivity instance;
displayMenu(); displayMenu();
break; break;
case LINPHONE_LOGIN: case LINPHONE_LOGIN:
displayLoginLinphone(); displayLoginLinphone(null, null);
break; break;
default: default:
throw new IllegalStateException("Can't handle " + fragment); throw new IllegalStateException("Can't handle " + fragment);
@ -453,11 +445,13 @@ private static AssistantActivity instance;
back.setVisibility(View.VISIBLE); back.setVisibility(View.VISIBLE);
} }
public void displayLoginLinphone() { public void displayLoginLinphone(String username, String password) {
fragment = new LinphoneLoginFragment(); fragment = new LinphoneLoginFragment();
Bundle extras = new Bundle(); Bundle extras = new Bundle();
extras.putString("Phone", null); extras.putString("Phone", null);
extras.putString("Dialcode", null); extras.putString("Dialcode", null);
extras.putString("Username", username);
extras.putString("Password", password);
fragment.setArguments(extras); fragment.setArguments(extras);
changeFragment(fragment); changeFragment(fragment);
currentFragment = AssistantFragmentsEnum.LINPHONE_LOGIN; currentFragment = AssistantFragmentsEnum.LINPHONE_LOGIN;
@ -490,11 +484,6 @@ private static AssistantActivity instance;
back.setVisibility(View.VISIBLE); back.setVisibility(View.VISIBLE);
} }
public void retryLogin(String username, String password, String prefix, String domain, TransportType transport) {
accountCreated = false;
saveCreatedAccount(username, password, null, prefix, domain, transport);
}
private void launchDownloadCodec() { private void launchDownloadCodec() {
if (LinphoneManager.getLc().downloadOpenH264Enabled()) { if (LinphoneManager.getLc().downloadOpenH264Enabled()) {
OpenH264DownloadHelper downloadHelper = LinphoneCoreFactory.instance().createOpenH264DownloadHelper(); OpenH264DownloadHelper downloadHelper = LinphoneCoreFactory.instance().createOpenH264DownloadHelper();
@ -521,9 +510,7 @@ private static AssistantActivity instance;
return phoneNumberWithCountry; return phoneNumberWithCountry;
} }
public void saveCreatedAccount(String username, String password, String ha1, String prefix, String domain, TransportType transport) { public void saveCreatedAccount(String username, String userid, String password, String ha1, String prefix, String domain, TransportType transport) {
if (accountCreated)
return;
username = LinphoneUtils.getDisplayableUsernameFromAddress(username); username = LinphoneUtils.getDisplayableUsernameFromAddress(username);
domain = LinphoneUtils.getDisplayableUsernameFromAddress(domain); domain = LinphoneUtils.getDisplayableUsernameFromAddress(domain);
@ -539,6 +526,7 @@ private static AssistantActivity instance;
.setUsername(username) .setUsername(username)
.setDomain(domain) .setDomain(domain)
.setHa1(ha1) .setHa1(ha1)
.setUserId(userid)
.setPassword(password); .setPassword(password);
if (prefix != null) { if (prefix != null) {
@ -555,14 +543,6 @@ private static AssistantActivity instance;
builder.setTransport(transport); builder.setTransport(transport);
} }
if (getResources().getBoolean(R.bool.enable_push_id)) {
String regId = mPrefs.getPushNotificationRegistrationID();
String appId = getString(R.string.push_sender_id);
if (regId != null && mPrefs.isPushNotificationEnabled()) {
String contactInfos = "app-id=" + appId + ";pn-type=" + getString(R.string.push_type) + ";pn-tok=" + regId;
builder.setContactParameters(contactInfos);
}
try { try {
builder.saveNewAccount(); builder.saveNewAccount();
if (!newAccount) { if (!newAccount) {
@ -573,7 +553,6 @@ private static AssistantActivity instance;
Log.e(e); Log.e(e);
} }
} }
}
public void displayRegistrationInProgressDialog() { public void displayRegistrationInProgressDialog() {
if(LinphoneManager.getLc().isNetworkReachable()) { if(LinphoneManager.getLc().isNetworkReachable()) {

View file

@ -62,7 +62,7 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
private Boolean recoverAccount; private Boolean recoverAccount;
private LinphoneAccountCreator accountCreator; private LinphoneAccountCreator accountCreator;
private int countryCode; private int countryCode;
private String phone, dialcode; private String phone, dialcode, username, pwd;
private ImageView phoneNumberInfo; private ImageView phoneNumberInfo;
@Override @Override
@ -170,6 +170,16 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
passwordLayout.setVisibility(View.VISIBLE); passwordLayout.setVisibility(View.VISIBLE);
} }
// When we come from generic login fragment
username = getArguments().getString("Username");
pwd = getArguments().getString("Password");
if (username != null && pwd != null) {
useUsername.setChecked(true);
onCheckedChanged(useUsername, true);
login.setText(username);
password.setText(pwd);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
accountCreator.setLanguage(Locale.getDefault().toLanguageTag()); accountCreator.setLanguage(Locale.getDefault().toLanguageTag());
} }

View file

@ -36,7 +36,7 @@ import android.widget.Toast;
* @author Sylvain Berfini * @author Sylvain Berfini
*/ */
public class LoginFragment extends Fragment implements OnClickListener, TextWatcher { public class LoginFragment extends Fragment implements OnClickListener, TextWatcher {
private EditText login, password, domain; private EditText login, userid, password, domain;
private RadioGroup transports; private RadioGroup transports;
private Button apply; private Button apply;
@ -47,6 +47,8 @@ public class LoginFragment extends Fragment implements OnClickListener, TextWatc
login = (EditText) view.findViewById(R.id.assistant_username); login = (EditText) view.findViewById(R.id.assistant_username);
login.addTextChangedListener(this); login.addTextChangedListener(this);
userid = (EditText) view.findViewById(R.id.assistant_userid);
userid.addTextChangedListener(this);
password = (EditText) view.findViewById(R.id.assistant_password); password = (EditText) view.findViewById(R.id.assistant_password);
password.addTextChangedListener(this); password.addTextChangedListener(this);
domain = (EditText) view.findViewById(R.id.assistant_domain); domain = (EditText) view.findViewById(R.id.assistant_domain);
@ -80,7 +82,11 @@ public class LoginFragment extends Fragment implements OnClickListener, TextWatc
} }
} }
AssistantActivity.instance().genericLogIn(login.getText().toString(), password.getText().toString(), null, domain.getText().toString(), transport); if (domain.getText().toString().compareTo(getString(R.string.default_domain)) == 0) {
AssistantActivity.instance().displayLoginLinphone(login.getText().toString(), password.getText().toString());
} else {
AssistantActivity.instance().genericLogIn(login.getText().toString(), userid.getText().toString(), password.getText().toString(), null, domain.getText().toString(), transport);
}
} }
} }

View file

@ -71,7 +71,7 @@ public class WelcomeFragment extends Fragment implements OnClickListener {
if (id == R.id.login_generic) { if (id == R.id.login_generic) {
AssistantActivity.instance().displayLoginGeneric(); AssistantActivity.instance().displayLoginGeneric();
} else if (id == R.id.login_linphone) { } else if (id == R.id.login_linphone) {
AssistantActivity.instance().displayLoginLinphone(); AssistantActivity.instance().displayLoginLinphone(null, null);
} else if (id == R.id.create_account) { } else if (id == R.id.create_account) {
AssistantActivity.instance().displayCreateAccount(); AssistantActivity.instance().displayCreateAccount();
} else if (id == R.id.remote_provisioning) { } else if (id == R.id.remote_provisioning) {