Edit user profile
This commit is contained in:
parent
b3a0f97ff4
commit
2db6e9310a
|
@ -110,14 +110,14 @@ dependencies {
|
||||||
implementation 'com.github.chrisvest:stormpot:2.4.2'
|
implementation 'com.github.chrisvest:stormpot:2.4.2'
|
||||||
implementation 'androidx.browser:browser:1.8.0'
|
implementation 'androidx.browser:browser:1.8.0'
|
||||||
implementation 'com.google.android.flexbox:flexbox:3.0.0'
|
implementation 'com.google.android.flexbox:flexbox:3.0.0'
|
||||||
implementation('org.codeberg.gitnex:tea4j-autodeploy:3f8f9fce13') {
|
implementation('org.codeberg.gitnex:tea4j-autodeploy:5f0dc819a3') {
|
||||||
exclude module: 'org.apache.oltu.oauth2.common'
|
exclude module: 'org.apache.oltu.oauth2.common'
|
||||||
}
|
}
|
||||||
implementation 'io.github.amrdeveloper:codeview:1.3.9'
|
implementation 'io.github.amrdeveloper:codeview:1.3.9'
|
||||||
|
|
||||||
constraints {
|
constraints {
|
||||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0")
|
it.implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0")
|
||||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0")
|
it.implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package org.mian.gitnex.clients;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
|
@ -230,7 +231,9 @@ public class RetrofitClient {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Converter<?, String> stringConverter(
|
public Converter<?, String> stringConverter(
|
||||||
@NotNull Type type, @NotNull Annotation[] annotations, @NotNull Retrofit retrofit) {
|
@NotNull Type type,
|
||||||
|
@NonNull @NotNull Annotation[] annotations,
|
||||||
|
@NotNull Retrofit retrofit) {
|
||||||
if (type == Date.class) {
|
if (type == Date.class) {
|
||||||
return DateQueryConverter.INSTANCE;
|
return DateQueryConverter.INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,16 +6,22 @@ import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import okhttp3.ResponseBody;
|
import okhttp3.ResponseBody;
|
||||||
import org.gitnex.tea4j.v2.models.Repository;
|
import org.gitnex.tea4j.v2.models.Repository;
|
||||||
import org.gitnex.tea4j.v2.models.User;
|
import org.gitnex.tea4j.v2.models.User;
|
||||||
|
import org.gitnex.tea4j.v2.models.UserSettings;
|
||||||
|
import org.gitnex.tea4j.v2.models.UserSettingsOptions;
|
||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
|
import org.mian.gitnex.activities.BaseActivity;
|
||||||
import org.mian.gitnex.activities.ProfileActivity;
|
import org.mian.gitnex.activities.ProfileActivity;
|
||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
import org.mian.gitnex.clients.RetrofitClient;
|
import org.mian.gitnex.clients.RetrofitClient;
|
||||||
|
import org.mian.gitnex.databinding.CustomEditProfileBinding;
|
||||||
import org.mian.gitnex.databinding.FragmentProfileDetailBinding;
|
import org.mian.gitnex.databinding.FragmentProfileDetailBinding;
|
||||||
import org.mian.gitnex.helpers.AlertDialogs;
|
import org.mian.gitnex.helpers.AlertDialogs;
|
||||||
import org.mian.gitnex.helpers.AppUtil;
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
|
@ -39,6 +45,9 @@ public class DetailFragment extends Fragment {
|
||||||
private Context context;
|
private Context context;
|
||||||
private FragmentProfileDetailBinding binding;
|
private FragmentProfileDetailBinding binding;
|
||||||
private String username;
|
private String username;
|
||||||
|
private CustomEditProfileBinding customEditProfileBinding;
|
||||||
|
private MaterialAlertDialogBuilder materialAlertDialogBuilder;
|
||||||
|
private AlertDialog dialogEditSettings;
|
||||||
|
|
||||||
public DetailFragment() {}
|
public DetailFragment() {}
|
||||||
|
|
||||||
|
@ -70,6 +79,10 @@ public class DetailFragment extends Fragment {
|
||||||
getProfileDetail(username);
|
getProfileDetail(username);
|
||||||
getProfileRepository(username);
|
getProfileRepository(username);
|
||||||
|
|
||||||
|
materialAlertDialogBuilder =
|
||||||
|
new MaterialAlertDialogBuilder(
|
||||||
|
context, R.style.ThemeOverlay_Material3_Dialog_Alert);
|
||||||
|
|
||||||
binding.userFollowersCount.setOnClickListener(
|
binding.userFollowersCount.setOnClickListener(
|
||||||
metaFollowersFrame ->
|
metaFollowersFrame ->
|
||||||
((ProfileActivity) requireActivity()).viewPager.setCurrentItem(4));
|
((ProfileActivity) requireActivity()).viewPager.setCurrentItem(4));
|
||||||
|
@ -80,9 +93,135 @@ public class DetailFragment extends Fragment {
|
||||||
metaStarredReposFrame ->
|
metaStarredReposFrame ->
|
||||||
((ProfileActivity) requireActivity()).viewPager.setCurrentItem(2));
|
((ProfileActivity) requireActivity()).viewPager.setCurrentItem(2));
|
||||||
|
|
||||||
|
if (username.equals(((BaseActivity) context).getAccount().getAccount().getUserName())) {
|
||||||
|
binding.editProfile.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
binding.editProfile.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.editProfile.setOnClickListener(
|
||||||
|
editProfileSettings -> {
|
||||||
|
customEditProfileBinding =
|
||||||
|
CustomEditProfileBinding.inflate(LayoutInflater.from(context));
|
||||||
|
showEditProfileDialog();
|
||||||
|
});
|
||||||
|
|
||||||
return binding.getRoot();
|
return binding.getRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void showEditProfileDialog() {
|
||||||
|
|
||||||
|
View view = customEditProfileBinding.getRoot();
|
||||||
|
materialAlertDialogBuilder.setView(view);
|
||||||
|
|
||||||
|
customEditProfileBinding.save.setOnClickListener(
|
||||||
|
saveKey ->
|
||||||
|
saveUserProfile(
|
||||||
|
String.valueOf(customEditProfileBinding.fullname.getText()),
|
||||||
|
String.valueOf(customEditProfileBinding.description.getText()),
|
||||||
|
String.valueOf(customEditProfileBinding.location.getText()),
|
||||||
|
String.valueOf(customEditProfileBinding.website.getText()),
|
||||||
|
customEditProfileBinding.hideEmail.isChecked(),
|
||||||
|
customEditProfileBinding.hideActivity.isChecked()));
|
||||||
|
|
||||||
|
dialogEditSettings = materialAlertDialogBuilder.show();
|
||||||
|
|
||||||
|
getUserProfileSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveUserProfile(
|
||||||
|
String fullname,
|
||||||
|
String description,
|
||||||
|
String location,
|
||||||
|
String website,
|
||||||
|
boolean hideEmail,
|
||||||
|
boolean hideActivity) {
|
||||||
|
|
||||||
|
UserSettingsOptions userSettings = new UserSettingsOptions();
|
||||||
|
userSettings.setFullName(fullname);
|
||||||
|
userSettings.setDescription(description);
|
||||||
|
userSettings.setLocation(location);
|
||||||
|
userSettings.setWebsite(website);
|
||||||
|
userSettings.setHideEmail(hideEmail);
|
||||||
|
userSettings.setHideActivity(hideActivity);
|
||||||
|
|
||||||
|
Call<UserSettings> saveUserSettings =
|
||||||
|
RetrofitClient.getApiInterface(context).customUpdateUserSettings(userSettings);
|
||||||
|
|
||||||
|
saveUserSettings.enqueue(
|
||||||
|
new Callback<>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponse(
|
||||||
|
@NonNull Call<UserSettings> call,
|
||||||
|
@NonNull retrofit2.Response<UserSettings> response) {
|
||||||
|
|
||||||
|
if (response.code() == 200) {
|
||||||
|
|
||||||
|
dialogEditSettings.dismiss();
|
||||||
|
getProfileDetail(username);
|
||||||
|
Toasty.success(context, getString(R.string.settingsSave));
|
||||||
|
} else {
|
||||||
|
|
||||||
|
Toasty.error(context, getString(R.string.genericError));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull Call<UserSettings> call, @NonNull Throwable t) {
|
||||||
|
|
||||||
|
Toasty.error(context, getString(R.string.genericServerResponseError));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getUserProfileSettings() {
|
||||||
|
|
||||||
|
Call<UserSettings> call1 = RetrofitClient.getApiInterface(context).customGetUserSettings();
|
||||||
|
|
||||||
|
call1.enqueue(
|
||||||
|
new Callback<>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponse(
|
||||||
|
@NonNull Call<UserSettings> call,
|
||||||
|
@NonNull retrofit2.Response<UserSettings> response) {
|
||||||
|
|
||||||
|
if (response.isSuccessful() && response.body() != null) {
|
||||||
|
if (response.code() == 200) {
|
||||||
|
|
||||||
|
if (!response.body().getFullName().isEmpty()) {
|
||||||
|
customEditProfileBinding.fullname.setText(
|
||||||
|
response.body().getFullName());
|
||||||
|
}
|
||||||
|
if (!response.body().getDescription().isEmpty()) {
|
||||||
|
customEditProfileBinding.fullname.setText(
|
||||||
|
response.body().getDescription());
|
||||||
|
}
|
||||||
|
if (!response.body().getLocation().isEmpty()) {
|
||||||
|
customEditProfileBinding.fullname.setText(
|
||||||
|
response.body().getLocation());
|
||||||
|
}
|
||||||
|
if (!response.body().getWebsite().isEmpty()) {
|
||||||
|
customEditProfileBinding.fullname.setText(
|
||||||
|
response.body().getWebsite());
|
||||||
|
}
|
||||||
|
customEditProfileBinding.hideEmail.setChecked(
|
||||||
|
response.body().isHideEmail());
|
||||||
|
customEditProfileBinding.hideActivity.setChecked(
|
||||||
|
response.body().isHideActivity());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull Call<UserSettings> call, @NonNull Throwable t) {
|
||||||
|
Toasty.error(
|
||||||
|
context, context.getResources().getString(R.string.genericError));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void getProfileDetail(String username) {
|
public void getProfileDetail(String username) {
|
||||||
|
|
||||||
Call<User> call = RetrofitClient.getApiInterface(context).userGet(username);
|
Call<User> call = RetrofitClient.getApiInterface(context).userGet(username);
|
||||||
|
@ -117,19 +256,19 @@ public class DetailFragment extends Fragment {
|
||||||
binding.userEmail.setText(email);
|
binding.userEmail.setText(email);
|
||||||
|
|
||||||
binding.userFollowersCount.setText(
|
binding.userFollowersCount.setText(
|
||||||
String.valueOf(
|
String.format(
|
||||||
response.body().getFollowersCount()
|
response.body().getFollowersCount()
|
||||||
+ " "
|
+ " "
|
||||||
+ getString(
|
+ getString(
|
||||||
R.string.profileTabFollowers)));
|
R.string.profileTabFollowers)));
|
||||||
binding.userFollowingCount.setText(
|
binding.userFollowingCount.setText(
|
||||||
String.valueOf(
|
String.format(
|
||||||
response.body().getFollowingCount()
|
response.body().getFollowingCount()
|
||||||
+ " "
|
+ " "
|
||||||
+ getString(
|
+ getString(
|
||||||
R.string.profileTabFollowing)));
|
R.string.profileTabFollowing)));
|
||||||
binding.userStarredReposCount.setText(
|
binding.userStarredReposCount.setText(
|
||||||
String.valueOf(
|
String.format(
|
||||||
response.body().getStarredReposCount()
|
response.body().getStarredReposCount()
|
||||||
+ " "
|
+ " "
|
||||||
+ getString(R.string.starredRepos)));
|
+ getString(R.string.starredRepos)));
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class AccountContext implements Serializable {
|
||||||
|
|
||||||
public String getFullName() {
|
public String getFullName() {
|
||||||
return userInfo != null
|
return userInfo != null
|
||||||
? !userInfo.getFullName().equals("") ? userInfo.getFullName() : userInfo.getLogin()
|
? !userInfo.getFullName().isEmpty() ? userInfo.getFullName() : userInfo.getLogin()
|
||||||
: account.getUserName();
|
: account.getUserName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dimen8dp"
|
android:layout_marginTop="@dimen/dimen8dp"
|
||||||
android:layout_marginBottom="@dimen/dimen8dp"
|
android:layout_marginBottom="@dimen/dimen8dp"
|
||||||
android:hint="@string/newIssueDescriptionTitle"
|
android:hint="@string/description"
|
||||||
android:textColorHint="?attr/hintColor"
|
android:textColorHint="?attr/hintColor"
|
||||||
app:boxStrokeErrorColor="@color/darkRed"
|
app:boxStrokeErrorColor="@color/darkRed"
|
||||||
app:endIconMode="clear_text"
|
app:endIconMode="clear_text"
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dimen8dp"
|
android:layout_marginTop="@dimen/dimen8dp"
|
||||||
android:layout_marginBottom="@dimen/dimen8dp"
|
android:layout_marginBottom="@dimen/dimen8dp"
|
||||||
android:hint="@string/newMilestoneDescription"
|
android:hint="@string/description"
|
||||||
android:textColorHint="?attr/hintColor"
|
android:textColorHint="?attr/hintColor"
|
||||||
app:boxStrokeErrorColor="@color/darkRed"
|
app:boxStrokeErrorColor="@color/darkRed"
|
||||||
app:counterEnabled="true"
|
app:counterEnabled="true"
|
||||||
|
|
|
@ -91,7 +91,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dimen8dp"
|
android:layout_marginTop="@dimen/dimen8dp"
|
||||||
android:layout_marginBottom="@dimen/dimen8dp"
|
android:layout_marginBottom="@dimen/dimen8dp"
|
||||||
android:hint="@string/newIssueDescriptionTitle"
|
android:hint="@string/description"
|
||||||
android:textColorHint="?attr/hintColor"
|
android:textColorHint="?attr/hintColor"
|
||||||
app:boxStrokeErrorColor="@color/darkRed"
|
app:boxStrokeErrorColor="@color/darkRed"
|
||||||
app:endIconMode="clear_text"
|
app:endIconMode="clear_text"
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dimen8dp"
|
android:layout_marginTop="@dimen/dimen8dp"
|
||||||
android:layout_marginBottom="@dimen/dimen8dp"
|
android:layout_marginBottom="@dimen/dimen8dp"
|
||||||
android:hint="@string/newTeamDesc"
|
android:hint="@string/description"
|
||||||
android:textColorHint="?attr/hintColor"
|
android:textColorHint="?attr/hintColor"
|
||||||
app:boxStrokeErrorColor="@color/darkRed"
|
app:boxStrokeErrorColor="@color/darkRed"
|
||||||
app:counterEnabled="true"
|
app:counterEnabled="true"
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dimen8dp"
|
android:layout_marginTop="@dimen/dimen8dp"
|
||||||
android:layout_marginBottom="@dimen/dimen8dp"
|
android:layout_marginBottom="@dimen/dimen8dp"
|
||||||
android:hint="@string/newIssueDescriptionTitle"
|
android:hint="@string/description"
|
||||||
android:textColorHint="?attr/hintColor"
|
android:textColorHint="?attr/hintColor"
|
||||||
app:boxStrokeErrorColor="@color/darkRed"
|
app:boxStrokeErrorColor="@color/darkRed"
|
||||||
app:endIconMode="clear_text"
|
app:endIconMode="clear_text"
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="@dimen/dimen8dp">
|
||||||
|
|
||||||
|
<androidx.core.widget.NestedScrollView
|
||||||
|
android:id="@+id/mainView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="@dimen/dimen16dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/fullnameLayout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:hint="@string/userFullNameText"
|
||||||
|
android:textColorHint="?attr/hintColor"
|
||||||
|
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||||
|
app:boxStrokeErrorColor="@color/darkRed"
|
||||||
|
app:hintTextColor="?attr/hintColor">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/fullname"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="?attr/inputTextColor"
|
||||||
|
android:textColorHighlight="?attr/hintColor"
|
||||||
|
android:textColorHint="?attr/hintColor"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/descriptionLayout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:hint="@string/description"
|
||||||
|
android:textColorHint="?attr/hintColor"
|
||||||
|
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||||
|
app:boxStrokeErrorColor="@color/darkRed"
|
||||||
|
app:hintTextColor="?attr/hintColor">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/description"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="top|start"
|
||||||
|
android:minHeight="@dimen/dimen80dp"
|
||||||
|
android:singleLine="false"
|
||||||
|
android:textColor="?attr/inputTextColor"
|
||||||
|
android:textColorHighlight="?attr/hintColor"
|
||||||
|
android:textColorHint="?attr/hintColor"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/locationLayout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:hint="@string/locationText"
|
||||||
|
android:textColorHint="?attr/hintColor"
|
||||||
|
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||||
|
app:boxStrokeErrorColor="@color/darkRed"
|
||||||
|
app:hintTextColor="?attr/hintColor">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/location"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="?attr/inputTextColor"
|
||||||
|
android:textColorHighlight="?attr/hintColor"
|
||||||
|
android:textColorHint="?attr/hintColor"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/websiteLayout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:hint="@string/websiteText"
|
||||||
|
android:textColorHint="?attr/hintColor"
|
||||||
|
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||||
|
app:boxStrokeErrorColor="@color/darkRed"
|
||||||
|
app:hintTextColor="?attr/hintColor">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/website"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="?attr/inputTextColor"
|
||||||
|
android:textColorHighlight="?attr/hintColor"
|
||||||
|
android:textColorHint="?attr/hintColor"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
|
android:id="@+id/hideEmail"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="@string/hideEmail"
|
||||||
|
android:textColor="?attr/primaryTextColor" />
|
||||||
|
|
||||||
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
|
android:id="@+id/hideActivity"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="@string/hideActivity"
|
||||||
|
android:textColor="?attr/primaryTextColor" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/save"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dimen54dp"
|
||||||
|
android:layout_marginTop="@dimen/dimen16dp"
|
||||||
|
android:text="@string/saveButton"
|
||||||
|
android:textColor="?attr/materialCardBackgroundColor"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
|
</LinearLayout>
|
|
@ -91,6 +91,18 @@
|
||||||
android:textIsSelectable="true"
|
android:textIsSelectable="true"
|
||||||
android:textSize="@dimen/dimen14sp" />
|
android:textSize="@dimen/dimen14sp" />
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/editProfile"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/editSettings"
|
||||||
|
android:textColor="?attr/materialCardBackgroundColor"
|
||||||
|
android:backgroundTint="?attr/fabColor"
|
||||||
|
app:iconTint="?attr/materialCardBackgroundColor"
|
||||||
|
app:icon="@drawable/ic_edit"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -176,7 +176,6 @@
|
||||||
<string name="noReleaseBodyContent">Release notes are not provided by the publisher.</string>
|
<string name="noReleaseBodyContent">Release notes are not provided by the publisher.</string>
|
||||||
|
|
||||||
<string name="newMilestoneTitle">Title</string>
|
<string name="newMilestoneTitle">Title</string>
|
||||||
<string name="newMilestoneDescription">Description</string>
|
|
||||||
<string name="newMilestoneDueDate">Due Date</string>
|
<string name="newMilestoneDueDate">Due Date</string>
|
||||||
<string name="setDueDate" translatable="false">%1$d-%2$d-%3$d</string>
|
<string name="setDueDate" translatable="false">%1$d-%2$d-%3$d</string>
|
||||||
<string name="milestoneNameErrorEmpty">Milestone title is empty</string>
|
<string name="milestoneNameErrorEmpty">Milestone title is empty</string>
|
||||||
|
@ -193,7 +192,6 @@
|
||||||
<string name="newIssueSelectLabelsListTitle">Select Labels</string>
|
<string name="newIssueSelectLabelsListTitle">Select Labels</string>
|
||||||
<string name="newIssueTitle">Title</string>
|
<string name="newIssueTitle">Title</string>
|
||||||
<string name="newIssueAssigneesListTitle">Assignees</string>
|
<string name="newIssueAssigneesListTitle">Assignees</string>
|
||||||
<string name="newIssueDescriptionTitle">Description</string>
|
|
||||||
<string name="newIssueDueDateTitle">Due Date</string>
|
<string name="newIssueDueDateTitle">Due Date</string>
|
||||||
<string name="newIssueMilestoneTitle">Milestone</string>
|
<string name="newIssueMilestoneTitle">Milestone</string>
|
||||||
<string name="newIssueLabelsTitle">Labels</string>
|
<string name="newIssueLabelsTitle">Labels</string>
|
||||||
|
@ -323,7 +321,6 @@
|
||||||
|
|
||||||
<!-- create team -->
|
<!-- create team -->
|
||||||
<string name="newTeamTitle">Team Name</string>
|
<string name="newTeamTitle">Team Name</string>
|
||||||
<string name="newTeamDesc">Description</string>
|
|
||||||
<string name="newTeamPermission">Permission</string>
|
<string name="newTeamPermission">Permission</string>
|
||||||
<string name="newTeamAccessControls">Access Controls</string>
|
<string name="newTeamAccessControls">Access Controls</string>
|
||||||
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
|
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
|
||||||
|
@ -360,6 +357,9 @@
|
||||||
<string name="profileTabFollowers">Followers</string>
|
<string name="profileTabFollowers">Followers</string>
|
||||||
<string name="profileTabFollowing">Following</string>
|
<string name="profileTabFollowing">Following</string>
|
||||||
<string name="usernameWithAt" translatable="false">\u0040%1$s</string>
|
<string name="usernameWithAt" translatable="false">\u0040%1$s</string>
|
||||||
|
<string name="editSettings">Edit Profile</string>
|
||||||
|
<string name="hideActivity">Hide Activity from profile page</string>
|
||||||
|
<string name="hideEmail">Hide Email</string>
|
||||||
<!-- profile section -->
|
<!-- profile section -->
|
||||||
|
|
||||||
<!-- account settings -->
|
<!-- account settings -->
|
||||||
|
@ -548,6 +548,7 @@
|
||||||
<string name="main">main</string>
|
<string name="main">main</string>
|
||||||
<string name="license">License</string>
|
<string name="license">License</string>
|
||||||
<string name="title">Title</string>
|
<string name="title">Title</string>
|
||||||
|
<string name="description">Description</string>
|
||||||
<!-- generic copy -->
|
<!-- generic copy -->
|
||||||
|
|
||||||
<string name="exploreUsers">Explore users</string>
|
<string name="exploreUsers">Explore users</string>
|
||||||
|
|
Loading…
Reference in New Issue