This commit is contained in:
nuclearfog 2022-12-28 10:56:36 +01:00
parent dce43a90ea
commit 2777706d76
No known key found for this signature in database
GPG Key ID: 03488A185C476379
4 changed files with 83 additions and 68 deletions

View File

@ -40,6 +40,7 @@ import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.ErrorHandler;
import org.nuclearfog.twidda.backend.utils.PicassoBuilder;
import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.model.Account;
import org.nuclearfog.twidda.model.User;
import org.nuclearfog.twidda.ui.dialogs.ConfirmDialog;
import org.nuclearfog.twidda.ui.dialogs.ConfirmDialog.OnConfirmListener;
@ -80,12 +81,12 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
private ConfirmDialog confirmDialog;
private ImageView profile_image, profile_banner, toolbar_background, changeBannerBtn;
private EditText name, link, loc, bio;
private EditText username, profileUrl, location, userDescription;
private Button addBannerBtn;
@Nullable
private User user;
ProfileUpdate holder = new ProfileUpdate();
private ProfileUpdate holder = new ProfileUpdate();
@Override
@ -98,17 +99,19 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.page_editprofile);
Toolbar toolbar = findViewById(R.id.editprofile_toolbar);
Toolbar toolbar = findViewById(R.id.edit_profile_toolbar);
ConstraintLayout root = findViewById(R.id.page_edit);
profile_image = findViewById(R.id.edit_pb);
profile_banner = findViewById(R.id.edit_banner);
addBannerBtn = findViewById(R.id.edit_add_banner);
changeBannerBtn = findViewById(R.id.edit_change_banner);
toolbar_background = findViewById(R.id.editprofile_toolbar_background);
name = findViewById(R.id.edit_name);
link = findViewById(R.id.edit_link);
loc = findViewById(R.id.edit_location);
bio = findViewById(R.id.edit_bio);
View locationDescription = findViewById(R.id.profile_edit_change_location_label);
View urlDescription = findViewById(R.id.profile_edit_change_url_label);
profile_image = findViewById(R.id.edit_profile_image);
profile_banner = findViewById(R.id.profile_edit_banner);
addBannerBtn = findViewById(R.id.profile_edit_add_banner);
changeBannerBtn = findViewById(R.id.profile_edit_change_banner);
toolbar_background = findViewById(R.id.profile_edit_toolbar_background);
username = findViewById(R.id.profile_edit_change_name);
profileUrl = findViewById(R.id.profile_edit_change_url);
location = findViewById(R.id.profile_edit_change_location);
userDescription = findViewById(R.id.profile_edit_change_description);
loadingCircle = new ProgressDialog(this);
confirmDialog = new ConfirmDialog(this);
@ -120,10 +123,16 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
if (!settings.toolbarOverlapEnabled()) {
ConstraintSet constraints = new ConstraintSet();
constraints.clone(root);
constraints.connect(R.id.edit_banner, ConstraintSet.TOP, R.id.editprofile_toolbar, ConstraintSet.BOTTOM);
constraints.connect(R.id.edit_add_banner, ConstraintSet.TOP, R.id.edit_banner, ConstraintSet.TOP);
constraints.connect(R.id.profile_edit_banner, ConstraintSet.TOP, R.id.edit_profile_toolbar, ConstraintSet.BOTTOM);
constraints.connect(R.id.profile_edit_add_banner, ConstraintSet.TOP, R.id.profile_edit_banner, ConstraintSet.TOP);
constraints.applyTo(root);
}
if (settings.getLogin().getApiType() != Account.API_TWITTER) {
profileUrl.setVisibility(View.GONE);
location.setVisibility(View.GONE);
locationDescription.setVisibility(View.GONE);
urlDescription.setVisibility(View.GONE);
}
toolbar.setBackgroundColor(settings.getBackgroundColor() & TOOLBAR_TRANSPARENCY);
profile_banner.setDrawingCacheEnabled(true);
AppStyles.setTheme(root);
@ -131,8 +140,7 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
Object data = getIntent().getSerializableExtra(KEY_PROFILE_DATA);
if (data instanceof User) {
user = (User) data;
setUser();
setUser((User) data);
}
profile_image.setOnClickListener(this);
profile_banner.setOnClickListener(this);
@ -153,10 +161,10 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
@Override
public void onBackPressed() {
String username = name.getText().toString();
String userLink = link.getText().toString();
String userLoc = loc.getText().toString();
String userBio = bio.getText().toString();
String username = this.username.getText().toString();
String userLink = profileUrl.getText().toString();
String userLoc = location.getText().toString();
String userBio = userDescription.getText().toString();
if (user != null && username.equals(user.getUsername()) && userLink.equals(user.getProfileUrl())
&& userLoc.equals(user.getLocation()) && userBio.equals(user.getDescription()) && !holder.imageAdded()) {
finish();
@ -218,11 +226,11 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
@Override
public void onClick(View v) {
// select net profile image
if (v.getId() == R.id.edit_pb) {
if (v.getId() == R.id.edit_profile_image) {
getMedia(REQUEST_PROFILE);
}
// select new banner image
else if (v.getId() == R.id.edit_add_banner || v.getId() == R.id.edit_banner) {
else if (v.getId() == R.id.profile_edit_add_banner || v.getId() == R.id.profile_edit_banner) {
getMedia(REQUEST_BANNER);
}
}
@ -289,16 +297,16 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
*/
private void updateUser() {
if (editorAsync == null || editorAsync.getStatus() != RUNNING) {
String username = name.getText().toString();
String userLink = link.getText().toString();
String userLoc = loc.getText().toString();
String userBio = bio.getText().toString();
String username = this.username.getText().toString();
String userLink = profileUrl.getText().toString();
String userLoc = location.getText().toString();
String userBio = userDescription.getText().toString();
if (username.trim().isEmpty()) {
String errMsg = getString(R.string.error_empty_name);
name.setError(errMsg);
this.username.setError(errMsg);
} else if (!userLink.isEmpty() && !Patterns.WEB_URL.matcher(userLink).matches()) {
String errMsg = getString(R.string.error_invalid_link);
link.setError(errMsg);
profileUrl.setError(errMsg);
} else if (editorAsync == null || editorAsync.getStatus() != RUNNING) {
holder.setProfile(username, userLink, userBio, userLoc);
if (holder.prepare(getContentResolver())) {
@ -315,7 +323,7 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
/**
* Set current user's information
*/
private void setUser() {
private void setUser(User user) {
String profileImageUrl = user.getProfileImageThumbnailUrl();
String bannerImageUrl = user.getBannerImageThumbnailUrl();
if (!profileImageUrl.isEmpty()) {
@ -330,9 +338,10 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
addBannerBtn.setVisibility(VISIBLE);
changeBannerBtn.setVisibility(INVISIBLE);
}
name.setText(user.getUsername());
link.setText(user.getProfileUrl());
loc.setText(user.getLocation());
bio.setText(user.getDescription());
username.setText(user.getUsername());
profileUrl.setText(user.getProfileUrl());
location.setText(user.getLocation());
userDescription.setText(user.getDescription());
this.user = user;
}
}

View File

@ -187,9 +187,9 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
if (settings.getLogin().getApiType() != Account.API_TWITTER) {
enableTwitterAlt.setVisibility(GONE);
EnableTwitterAltDescr.setVisibility(GONE);
trend_card.setVisibility(GONE);
}
if (!settings.isLoggedIn()) {
trend_card.setVisibility(GONE);
user_card.setVisibility(GONE);
}
if (!settings.isProxyEnabled()) {
@ -244,7 +244,7 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
@Override
protected void onStart() {
super.onStart();
if (settings.isLoggedIn() && locationAsync == null) {
if (settings.getLogin().getApiType() == Account.API_TWITTER && locationAsync == null) {
locationAsync = new LocationLoader(this);
locationAsync.execute();
}

View File

@ -60,6 +60,7 @@ import org.nuclearfog.twidda.backend.utils.ErrorHandler;
import org.nuclearfog.twidda.backend.utils.PicassoBuilder;
import org.nuclearfog.twidda.backend.utils.StringTools;
import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.model.Account;
import org.nuclearfog.twidda.model.Card;
import org.nuclearfog.twidda.model.Location;
import org.nuclearfog.twidda.model.Media;
@ -324,7 +325,8 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
}
if (status.getAuthor().isCurrentUser()) {
optDelete.setVisible(true);
if (new Date().getTime() - status.getTimestamp() < 2419200000L) {
long currentTime = new Date().getTime();
if (settings.getLogin().getApiType() == Account.API_TWITTER && currentTime - status.getTimestamp() < 2419200000L) {
optMetrics.setVisible(true);
}
}

View File

@ -10,7 +10,7 @@
tools:context=".ui.activities.ProfileEditor">
<ImageView
android:id="@+id/edit_banner"
android:id="@+id/profile_edit_banner"
android:layout_width="0dp"
android:layout_height="0dp"
android:contentDescription="@string/profile_banner"
@ -21,42 +21,42 @@
app:layout_constraintDimensionRatio="3.0" />
<Button
android:id="@+id/edit_add_banner"
android:id="@+id/profile_edit_add_banner"
android:layout_width="wrap_content"
android:layout_height="@dimen/editprofile_button_height"
android:visibility="invisible"
android:paddingLeft="@dimen/editprofile_button_padding"
android:paddingRight="@dimen/editprofile_button_padding"
android:text="@string/editprofile_add_banner"
app:layout_constraintStart_toStartOf="@id/edit_banner"
app:layout_constraintTop_toBottomOf="@id/editprofile_toolbar_background"
app:layout_constraintBottom_toBottomOf="@id/edit_banner"
app:layout_constraintEnd_toEndOf="@id/edit_banner"
app:layout_constraintStart_toStartOf="@id/profile_edit_banner"
app:layout_constraintTop_toBottomOf="@id/profile_edit_toolbar_background"
app:layout_constraintBottom_toBottomOf="@id/profile_edit_banner"
app:layout_constraintEnd_toEndOf="@id/profile_edit_banner"
style="@style/FeedbackButton" />
<ImageView
android:id="@+id/edit_change_banner"
android:id="@+id/profile_edit_change_banner"
android:layout_width="@dimen/editprofile_add_btn_size"
android:layout_height="@dimen/editprofile_add_btn_size"
android:contentDescription="@string/descr_add_profile_image"
android:src="@drawable/add"
app:layout_constraintStart_toStartOf="@id/edit_add_banner"
app:layout_constraintTop_toTopOf="@id/edit_add_banner"
app:layout_constraintBottom_toBottomOf="@id/edit_add_banner"
app:layout_constraintEnd_toEndOf="@id/edit_add_banner" />
app:layout_constraintStart_toStartOf="@id/profile_edit_add_banner"
app:layout_constraintTop_toTopOf="@id/profile_edit_add_banner"
app:layout_constraintBottom_toBottomOf="@id/profile_edit_add_banner"
app:layout_constraintEnd_toEndOf="@id/profile_edit_add_banner" />
<ImageView
android:id="@+id/editprofile_toolbar_background"
android:id="@+id/profile_edit_toolbar_background"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/edit_banner"
app:layout_constraintBottom_toBottomOf="@id/editprofile_toolbar"
app:layout_constraintTop_toTopOf="@id/profile_edit_banner"
app:layout_constraintBottom_toBottomOf="@id/edit_profile_toolbar"
app:layout_constraintEnd_toEndOf="parent"
tools:ignore="ContentDescription" />
<androidx.appcompat.widget.Toolbar
android:id="@+id/editprofile_toolbar"
android:id="@+id/edit_profile_toolbar"
android:layout_width="0dp"
android:layout_height="@dimen/editprofile_toolbar_height"
app:layout_constraintStart_toStartOf="parent"
@ -64,34 +64,34 @@
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:id="@+id/edit_pb"
android:id="@+id/edit_profile_image"
android:layout_width="@dimen/editprofile_image"
android:layout_height="@dimen/editprofile_image"
android:layout_marginStart="@dimen/editprofile_profile_image_left_margin"
android:contentDescription="@string/image_preview"
android:scaleType="centerCrop"
app:layout_constraintStart_toStartOf="@id/edit_banner"
app:layout_constraintTop_toBottomOf="@id/edit_banner"
app:layout_constraintBottom_toBottomOf="@id/edit_banner" />
app:layout_constraintStart_toStartOf="@id/profile_edit_banner"
app:layout_constraintTop_toBottomOf="@id/profile_edit_banner"
app:layout_constraintBottom_toBottomOf="@id/profile_edit_banner" />
<ImageView
android:id="@+id/profile_change_image_btn"
android:id="@+id/eidt_profile_change_profile_image"
android:layout_width="@dimen/editprofile_add_btn_size"
android:layout_height="@dimen/editprofile_add_btn_size"
android:contentDescription="@string/descr_add_profile_image"
android:src="@drawable/add"
app:layout_constraintStart_toStartOf="@id/edit_pb"
app:layout_constraintTop_toTopOf="@id/edit_pb"
app:layout_constraintBottom_toBottomOf="@id/edit_pb"
app:layout_constraintEnd_toEndOf="@id/edit_pb" />
app:layout_constraintStart_toStartOf="@id/edit_profile_image"
app:layout_constraintTop_toTopOf="@id/edit_profile_image"
app:layout_constraintBottom_toBottomOf="@id/edit_profile_image"
app:layout_constraintEnd_toEndOf="@id/edit_profile_image" />
<ScrollView
android:id="@+id/editprofile_scroll"
android:id="@+id/profile_edit_scroll"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="@dimen/editprofile_scrollview_margin"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/edit_pb"
app:layout_constraintTop_toBottomOf="@id/edit_profile_image"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
@ -103,13 +103,14 @@
android:layout_marginEnd="@dimen/editprofile_layout_padding">
<TextView
android:id="@+id/profile_edit_change_name_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/editprofile_edittext_padding"
android:text="@string/username" />
<EditText
android:id="@+id/edit_name"
android:id="@+id/profile_edit_change_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/enter_username"
@ -120,13 +121,14 @@
style="@style/TextInput" />
<TextView
android:id="@+id/profile_edit_change_location_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/editprofile_edittext_padding"
android:text="@string/profile_location" />
<EditText
android:id="@+id/edit_location"
android:id="@+id/profile_edit_change_location"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/edit_location_hint"
@ -136,29 +138,31 @@
style="@style/TextInput" />
<TextView
android:id="@+id/profile_edit_change_url_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/editprofile_edittext_padding"
android:text="@string/profile_link" />
<EditText
android:id="@+id/edit_link"
android:id="@+id/profile_edit_change_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/edit_hint_link"
android:importantForAutofill="no"
android:inputType="textNoSuggestions"
android:inputType="textUri"
android:singleLine="true"
style="@style/TextInput" />
<TextView
android:id="@+id/profile_edit_change_description_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/editprofile_edittext_padding"
android:text="@string/profile_bio" />
<EditText
android:id="@+id/edit_bio"
android:id="@+id/profile_edit_change_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"