bug fix, renamed variables and classes

This commit is contained in:
nuclearfog 2023-04-02 19:15:01 +02:00
parent 354c65d1a4
commit efd07880dc
No known key found for this signature in database
GPG Key ID: 03488A185C476379
6 changed files with 59 additions and 46 deletions

View File

@ -68,7 +68,7 @@ dependencies {
implementation 'jp.wasabeef:picasso-transformations:2.4.0'
implementation 'com.github.QuadFlask:colorpicker:0.0.15'
implementation 'com.github.nuclearfog:ZoomView:1.0.4'
implementation 'com.github.nuclearfog:Tagger:2.3'
implementation 'com.github.nuclearfog:Tagger:2.4'
implementation 'com.github.nuclearfog:LinkAndScrollMovement:1.4.1'
implementation 'com.github.kyleduo:SwitchButton:2.0.3-SNAPSHOT'
}

View File

@ -10,14 +10,14 @@ import org.nuclearfog.twidda.backend.api.twitter.v1.TwitterV1;
import org.nuclearfog.twidda.backend.api.twitter.v2.TwitterV2;
import org.nuclearfog.twidda.config.Configuration;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.config.GlobalSettings.OnSettingsChangeListener;
import org.nuclearfog.twidda.config.GlobalSettings.SettingsChangeObserver;
/**
* this class manages multiple API implementations depending on settings
*
* @author nuclearfog
*/
public class ConnectionManager implements OnSettingsChangeListener {
public class ConnectionManager implements SettingsChangeObserver {
private static final int IDX_MASTODON = 0;
private static final int IDX_TWITTER1 = 1;
@ -39,7 +39,7 @@ public class ConnectionManager implements OnSettingsChangeListener {
connections[IDX_TWITTER2] = new TwitterV2(context);
settings = GlobalSettings.getInstance(context);
settings.addSettingsChangeListener(this);
settings.addObserver(this);
}

View File

@ -7,14 +7,14 @@ import com.squareup.picasso.OkHttp3Downloader;
import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.config.GlobalSettings.OnSettingsChangeListener;
import org.nuclearfog.twidda.config.GlobalSettings.SettingsChangeObserver;
/**
* Create Picasso instance with proxy connection and image cache
*
* @author nuclearfog
*/
public class PicassoBuilder implements OnSettingsChangeListener {
public class PicassoBuilder implements SettingsChangeObserver {
/**
* local image cache size in bytes
@ -36,7 +36,7 @@ public class PicassoBuilder implements OnSettingsChangeListener {
*/
private PicassoBuilder(Context context) {
GlobalSettings settings = GlobalSettings.getInstance(context);
settings.addSettingsChangeListener(this);
settings.addObserver(this);
downloader = new OkHttp3Downloader(ConnectionBuilder.create(context, STORAGE_SIZE));
imageCache = new LruCache(CACHE_SIZE);
notifySettingsChange = false;

View File

@ -162,8 +162,11 @@ public class GlobalSettings {
private int indexScale;
private int listSize;
private List<OnSettingsChangeListener> settingsChangeListeners = new LinkedList<>();
private List<SettingsChangeObserver> settingsChangeObservers = new LinkedList<>();
/**
* single instance constructor
*/
private GlobalSettings() {
}
@ -947,20 +950,20 @@ public class GlobalSettings {
* changes like new proxy settings requires re initialization
* registered instances can be notified if these setting change
*
* @param listener listener called when some settings change
* @param observer listener called when some settings change
*/
public void addSettingsChangeListener(@NonNull OnSettingsChangeListener listener) {
settingsChangeListeners.add(listener);
public void addObserver(@NonNull SettingsChangeObserver observer) {
settingsChangeObservers.add(observer);
}
/**
* notify listener when settings changes and clear old instances
*/
private void notifySettingsChange() {
for (OnSettingsChangeListener listener : settingsChangeListeners) {
listener.onSettingsChange();
for (SettingsChangeObserver observer : settingsChangeObservers) {
observer.onSettingsChange();
}
settingsChangeListeners.clear();
settingsChangeObservers.clear();
}
/**
@ -1022,9 +1025,9 @@ public class GlobalSettings {
}
/**
* global listener for settings
* Observer interface to notify subclasses when settings change
*/
public interface OnSettingsChangeListener {
public interface SettingsChangeObserver {
/**
* called when settings change

View File

@ -145,6 +145,7 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult
private GlobalSettings settings;
private Picasso picasso;
private ConfirmDialog confirmDialog;
private RelationLoader relationLoader;
private UserLoader userLoader;
private EmojiLoader emojiLoader;
@ -283,6 +284,7 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult
protected void onDestroy() {
relationLoader.cancel();
userLoader.cancel();
emojiLoader.cancel();
super.onDestroy();
}

View File

@ -197,13 +197,14 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
private AsyncCallback<EmojiResult> statusTextUpdate = this::onStatusTextUpdate;
private AsyncCallback<EmojiResult> usernameUpdate = this::onUsernameUpdate;
private StatusAction statusLoader;
private NotificationAction notificationLoader;
private TranslationLoader translationLoader;
private PollAction pollLoader;
private EmojiLoader emojiLoader;
@Nullable
private ClipboardManager clip;
private StatusAction statusAsync;
private PollAction voteAsync;
private NotificationAction notificationAsync;
private TranslationLoader translationAsync;
private EmojiLoader emojiAsync;
private GlobalSettings settings;
private Picasso picasso;
private PreviewAdapter adapter;
@ -259,11 +260,11 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
spoilerHint = findViewById(R.id.page_status_text_sensitive_hint);
cardList = findViewById(R.id.page_status_cards);
statusAsync = new StatusAction(this);
voteAsync = new PollAction(this);
notificationAsync = new NotificationAction(this);
translationAsync = new TranslationLoader(this);
emojiAsync = new EmojiLoader(this);
statusLoader = new StatusAction(this);
pollLoader = new PollAction(this);
notificationLoader = new NotificationAction(this);
translationLoader = new TranslationLoader(this);
emojiLoader = new EmojiLoader(this);
picasso = PicassoBuilder.get(this);
settings = GlobalSettings.getInstance(this);
@ -305,7 +306,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
Status embeddedStatus = status.getEmbeddedStatus();
setStatus(status);
StatusParam statusParam = new StatusParam(StatusParam.ONLINE, status.getId());
statusAsync.execute(statusParam, statusCallback);
statusLoader.execute(statusParam, statusCallback);
if (embeddedStatus != null) {
statusId = embeddedStatus.getId();
replyUsername = embeddedStatus.getAuthor().getScreenname();
@ -317,7 +318,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
} else if (notificationObject instanceof Notification) {
Notification notification = (Notification) notificationObject;
NotificationActionParam notificationParam = new NotificationActionParam(NotificationActionParam.ONLINE, notification.getId());
notificationAsync.execute(notificationParam, notificationCallback);
notificationLoader.execute(notificationParam, notificationCallback);
if (notification.getStatus() != null) {
setNotification(notification);
statusId = notification.getStatus().getId();
@ -329,11 +330,11 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (statusId != 0L) {
replyUsername = savedInstanceState.getString(KEY_STATUS_NAME);
StatusParam statusParam = new StatusParam(StatusParam.DATABASE, statusId);
statusAsync.execute(statusParam, statusCallback);
statusLoader.execute(statusParam, statusCallback);
} else if (notificationId != 0L) {
replyUsername = savedInstanceState.getString(KEY_NOTIFICATION_NAME);
NotificationActionParam notificationParam = new NotificationActionParam(NotificationActionParam.ONLINE, notificationId);
notificationAsync.execute(notificationParam, notificationCallback);
notificationLoader.execute(notificationParam, notificationCallback);
}
}
// initialize status reply list
@ -366,7 +367,11 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
@Override
protected void onDestroy() {
statusAsync.cancel();
statusLoader.cancel();
pollLoader.cancel();
notificationLoader.cancel();
translationLoader.cancel();
emojiLoader.cancel();
super.onDestroy();
}
@ -475,13 +480,13 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
Toast.makeText(getApplicationContext(), R.string.info_loading, Toast.LENGTH_SHORT).show();
int mode = status.isBookmarked() ? StatusParam.UNBOOKMARK : StatusParam.BOOKMARK;
StatusParam param = new StatusParam(mode, status.getId());
statusAsync.execute(param, statusCallback);
statusLoader.execute(param, statusCallback);
}
// hide status
else if (item.getItemId() == R.id.menu_status_hide) {
int mode = hidden ? StatusParam.UNHIDE : StatusParam.HIDE;
StatusParam param = new StatusParam(mode, status.getId());
statusAsync.execute(param, statusCallback);
statusLoader.execute(param, statusCallback);
}
// get status link
else if (item.getItemId() == R.id.menu_status_browser) {
@ -606,8 +611,8 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
}
// translate status text
else if (v.getId() == R.id.page_status_text_translate) {
if (translationAsync.isIdle() && translation == null) {
translationAsync.execute(status.getId(), translationResult);
if (translationLoader.isIdle() && translation == null) {
translationLoader.execute(status.getId(), translationResult);
}
}
}
@ -616,13 +621,13 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
@Override
public boolean onLongClick(View v) {
if (status != null && statusAsync.isIdle()) {
if (status != null && statusLoader.isIdle()) {
// repost this status
if (v.getId() == R.id.page_status_repost) {
Toast.makeText(getApplicationContext(), R.string.info_loading, Toast.LENGTH_SHORT).show();
int mode = status.isReposted() ? StatusParam.UNREPOST : StatusParam.REPOST;
StatusParam param = new StatusParam(mode, status.getId());
statusAsync.execute(param, statusCallback);
statusLoader.execute(param, statusCallback);
return true;
}
// favorite this status
@ -630,7 +635,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
Toast.makeText(getApplicationContext(), R.string.info_loading, Toast.LENGTH_SHORT).show();
int mode = status.isFavorited() ? StatusParam.UNFAVORITE : StatusParam.FAVORITE;
StatusParam param = new StatusParam(mode, status.getId());
statusAsync.execute(param, statusCallback);
statusLoader.execute(param, statusCallback);
return true;
}
// go to original status
@ -673,7 +678,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
id = status.getEmbeddedStatus().getId();
}
StatusParam param = new StatusParam(StatusParam.DELETE, id);
statusAsync.execute(param, statusCallback);
statusLoader.execute(param, statusCallback);
}
break;
@ -786,9 +791,9 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
@Override
public void onVoteClick(Poll poll, int[] selection) {
if (voteAsync.isIdle()) {
if (pollLoader.isIdle()) {
PollActionParam param = new PollActionParam(PollActionParam.VOTE, poll, selection);
voteAsync.execute(param, pollResult);
pollLoader.execute(param, pollResult);
}
}
@ -833,9 +838,11 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
} else {
screenName.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
}
if (!status.getLanguage().isEmpty() && !status.getLanguage().equals(Locale.getDefault().getLanguage())) {
if (!status.getText().isEmpty() && !status.getLanguage().isEmpty() && !status.getLanguage().equals(Locale.getDefault().getLanguage())) {
translateText.setVisibility(View.VISIBLE);
translateText.setTextColor(settings.getHighlightColor());
} else {
translateText.setVisibility(View.GONE);
}
username.setText(author.getUsername());
screenName.setText(author.getScreenname());
@ -925,12 +932,12 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (settings.imagesEnabled()) {
if (status.getEmojis().length > 0 && spannableText != null) {
EmojiParam param = new EmojiParam(status.getEmojis(), spannableText, getResources().getDimensionPixelSize(R.dimen.page_status_icon_size));
emojiAsync.execute(param, statusTextUpdate);
emojiLoader.execute(param, statusTextUpdate);
}
if (author.getEmojis().length > 0 && !author.getUsername().isEmpty()) {
SpannableString usernameSpan = new SpannableString(author.getUsername());
EmojiParam param = new EmojiParam(author.getEmojis(), usernameSpan, getResources().getDimensionPixelSize(R.dimen.page_status_icon_size));
emojiAsync.execute(param, usernameUpdate);
emojiLoader.execute(param, usernameUpdate);
}
}
}
@ -965,6 +972,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
translateText.append(translation.getSource() + ", ");
translateText.append(getString(R.string.status_translate_source_language));
translateText.append(translation.getOriginalLanguage());
translateText.setVisibility(View.VISIBLE);
}
}
@ -979,7 +987,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
case StatusResult.DATABASE:
if (result.status != null) {
StatusParam param = new StatusParam(StatusParam.ONLINE, result.status.getId());
statusAsync.execute(param, statusCallback);
statusLoader.execute(param, statusCallback);
}
break;
@ -1064,7 +1072,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
case NotificationActionResult.DATABASE:
if (result.notification != null) {
NotificationActionParam param = new NotificationActionParam(NotificationActionParam.ONLINE, result.notification.getId());
notificationAsync.execute(param, notificationCallback);
notificationLoader.execute(param, notificationCallback);
}
// fall through