unified intern Async classes, schedule viewer fix, code cleanup

This commit is contained in:
nuclearfog 2023-09-30 23:00:51 +02:00
parent ae5e367434
commit f9395ff05a
No known key found for this signature in database
GPG Key ID: 03488A185C476379
66 changed files with 761 additions and 816 deletions

View File

@ -754,9 +754,11 @@ public class Mastodon implements Connection {
public ScheduledStatuses getScheduledStatuses(long minId, long maxId) throws ConnectionException {
try {
List<String> params = new ArrayList<>();
params.add("min_id" + minId);
params.add("max_id" + maxId);
params.add("limit" + settings.getListSize());
if (minId != 0L)
params.add("since_id=" + minId);
if (maxId != 0L)
params.add("max_id=" + maxId);
params.add("limit=" + settings.getListSize());
Response response = get(ENDPOINT_SCHEDULED_STATUS, params);
ResponseBody body = response.body();
if (response.code() == 200 && body != null) {

View File

@ -0,0 +1,53 @@
package org.nuclearfog.twidda.backend.async;
import android.content.Context;
import androidx.annotation.NonNull;
import org.nuclearfog.twidda.database.AppDatabase;
/**
* @author nuclearfog
*/
public class AccountAction extends AsyncExecutor<AccountAction.Param, AccountAction.Result> {
private AppDatabase db;
/**
*
*/
public AccountAction(Context context) {
db = new AppDatabase(context);
}
@Override
protected Result doInBackground(@NonNull Param param) {
db.removeLogin(param.id);
return new Result(param.id);
}
/**
*
*/
public static class Param {
final long id;
public Param(long id) {
this.id = id;
}
}
/**
*
*/
public static class Result {
public final long id;
Result(long id) {
this.id = id;
}
}
}

View File

@ -3,7 +3,6 @@ package org.nuclearfog.twidda.backend.async;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.nuclearfog.twidda.database.AppDatabase;
import org.nuclearfog.twidda.model.lists.Accounts;
@ -13,7 +12,7 @@ import org.nuclearfog.twidda.model.lists.Accounts;
*
* @author nuclearfog
*/
public class AccountLoader extends AsyncExecutor<AccountLoader.AccountParameter, AccountLoader.AccountResult> {
public class AccountLoader extends AsyncExecutor<Void, AccountLoader.Result> {
private AppDatabase db;
@ -26,56 +25,19 @@ public class AccountLoader extends AsyncExecutor<AccountLoader.AccountParameter,
@Override
protected AccountResult doInBackground(@NonNull AccountParameter request) {
switch (request.mode) {
case AccountParameter.LOAD:
Accounts accounts = db.getLogins();
return new AccountResult(AccountResult.LOAD, 0L, accounts);
case AccountParameter.DELETE:
db.removeLogin(request.id);
return new AccountResult(AccountResult.DELETE, request.id, null);
default:
return null;
}
protected Result doInBackground(@NonNull Void v) {
return new Result(db.getLogins());
}
/**
*
*/
public static class AccountParameter {
public static class Result {
public static final int LOAD = 1;
public static final int DELETE = 2;
final int mode;
final long id;
public AccountParameter(int mode, long id) {
this.mode = mode;
this.id = id;
}
}
/**
*
*/
public static class AccountResult {
public static final int ERROR = -1;
public static final int LOAD = 3;
public static final int DELETE = 4;
@Nullable
public final Accounts accounts;
public final int mode;
public final long id;
AccountResult(int mode, long id, @Nullable Accounts accounts) {
Result(Accounts accounts) {
this.accounts = accounts;
this.mode = mode;
this.id = id;
}
}
}

View File

@ -12,7 +12,7 @@ import org.nuclearfog.twidda.database.AppDatabase;
*
* @author nuclearfog
*/
public class DatabaseAction extends AsyncExecutor<DatabaseAction.DatabaseParam, DatabaseAction.DatabaseResult> {
public class DatabaseAction extends AsyncExecutor<DatabaseAction.Param, DatabaseAction.Result> {
private AppDatabase db;
private GlobalSettings settings;
@ -27,36 +27,36 @@ public class DatabaseAction extends AsyncExecutor<DatabaseAction.DatabaseParam,
@Override
protected DatabaseResult doInBackground(@NonNull DatabaseParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case DatabaseParam.DELETE:
case Param.DELETE:
db.resetDatabase();
return new DatabaseResult(DatabaseResult.DELETE);
return new Result(Result.DELETE);
case DatabaseParam.LOGOUT:
case Param.LOGOUT:
db.removeLogin(settings.getLogin().getId());
return new DatabaseResult(DatabaseResult.LOGOUT);
return new Result(Result.LOGOUT);
default:
return null;
}
} catch (Exception exception) {
return new DatabaseResult(DatabaseResult.ERROR);
return new Result(Result.ERROR);
}
}
/**
*
*/
public static class DatabaseParam {
public static class Param {
public static final int DELETE = 1;
public static final int LOGOUT = 2;
final int mode;
public DatabaseParam(int mode) {
public Param(int mode) {
this.mode = mode;
}
}
@ -64,15 +64,15 @@ public class DatabaseAction extends AsyncExecutor<DatabaseAction.DatabaseParam,
/**
*
*/
public static class DatabaseResult {
public static class Result {
public static final int ERROR = -1;
public static final int DELETE = 1;
public static final int LOGOUT = 2;
public static final int DELETE = 10;
public static final int LOGOUT = 11;
public final int mode;
DatabaseResult(int mode) {
Result(int mode) {
this.mode = mode;
}
}

View File

@ -15,7 +15,7 @@ import org.nuclearfog.twidda.model.lists.Domains;
*
* @author nuclearfog
*/
public class DomainAction extends AsyncExecutor<DomainAction.DomainParam, DomainAction.DomainResult> {
public class DomainAction extends AsyncExecutor<DomainAction.Param, DomainAction.Result> {
private Connection connection;
@ -28,33 +28,33 @@ public class DomainAction extends AsyncExecutor<DomainAction.DomainParam, Domain
@Override
protected DomainResult doInBackground(@NonNull DomainParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case DomainParam.MODE_LOAD:
case Param.MODE_LOAD:
Domains result = connection.getDomainBlocks(param.cursor);
return new DomainResult(DomainResult.MODE_LOAD, param.index, result, param.domain, null);
return new Result(Result.MODE_LOAD, param.index, result, param.domain, null);
case DomainParam.MODE_BLOCK:
case Param.MODE_BLOCK:
connection.blockDomain(param.domain);
return new DomainResult(DomainResult.MODE_BLOCK, param.index, null, param.domain, null);
return new Result(Result.MODE_BLOCK, param.index, null, param.domain, null);
case DomainParam.MODE_UNBLOCK:
case Param.MODE_UNBLOCK:
connection.unblockDomain(param.domain);
return new DomainResult(DomainResult.MODE_UNBLOCK, param.index, null, param.domain, null);
return new Result(Result.MODE_UNBLOCK, param.index, null, param.domain, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new DomainResult(DomainResult.ERROR, param.index, null, param.domain, exception);
return new Result(Result.ERROR, param.index, null, param.domain, exception);
}
}
/**
*
*/
public static class DomainParam {
public static class Param {
public static final int MODE_LOAD = 1;
public static final int MODE_BLOCK = 2;
@ -67,7 +67,7 @@ public class DomainAction extends AsyncExecutor<DomainAction.DomainParam, Domain
final int mode;
final int index;
public DomainParam(int mode, int index, long cursor, String domain) {
public Param(int mode, int index, long cursor, String domain) {
this.mode = mode;
this.cursor = cursor;
this.domain = domain;
@ -78,7 +78,7 @@ public class DomainAction extends AsyncExecutor<DomainAction.DomainParam, Domain
/**
*
*/
public static class DomainResult {
public static class Result {
public static final int ERROR = -1;
public static final int MODE_LOAD = 4;
@ -94,7 +94,7 @@ public class DomainAction extends AsyncExecutor<DomainAction.DomainParam, Domain
@Nullable
public final String domain;
DomainResult(int mode, int index, @Nullable Domains domains, @Nullable String domain, @Nullable ConnectionException exception) {
Result(int mode, int index, @Nullable Domains domains, @Nullable String domain, @Nullable ConnectionException exception) {
this.domains = domains;
this.domain = domain;
this.exception = exception;

View File

@ -15,7 +15,7 @@ import org.nuclearfog.twidda.model.Hashtag;
*
* @author nuclearfog
*/
public class HashtagAction extends AsyncExecutor<HashtagAction.HashtagActionParam, HashtagAction.HashtagActionResult> {
public class HashtagAction extends AsyncExecutor<HashtagAction.Param, HashtagAction.Result> {
private Connection connection;
@ -28,41 +28,41 @@ public class HashtagAction extends AsyncExecutor<HashtagAction.HashtagActionPara
@Override
protected HashtagActionResult doInBackground(@NonNull HashtagActionParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case HashtagActionParam.LOAD:
case Param.LOAD:
Hashtag result = connection.showHashtag(param.name);
return new HashtagActionResult(HashtagActionResult.LOAD, result, null);
return new Result(Result.LOAD, result, null);
case HashtagActionParam.FOLLOW:
case Param.FOLLOW:
result = connection.followHashtag(param.name);
return new HashtagActionResult(HashtagActionResult.FOLLOW, result, null);
return new Result(Result.FOLLOW, result, null);
case HashtagActionParam.UNFOLLOW:
case Param.UNFOLLOW:
result = connection.unfollowHashtag(param.name);
return new HashtagActionResult(HashtagActionResult.UNFOLLOW, result, null);
return new Result(Result.UNFOLLOW, result, null);
case HashtagActionParam.FEATURE:
case Param.FEATURE:
result = connection.featureHashtag(param.name);
return new HashtagActionResult(HashtagActionResult.FEATURE, result, null);
return new Result(Result.FEATURE, result, null);
case HashtagActionParam.UNFEATURE:
case Param.UNFEATURE:
result = connection.unfeatureHashtag(param.id);
return new HashtagActionResult(HashtagActionResult.UNFEATURE, result, null);
return new Result(Result.UNFEATURE, result, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new HashtagActionResult(HashtagActionResult.ERROR, null, exception);
return new Result(Result.ERROR, null, exception);
}
}
/**
*
*/
public static class HashtagActionParam {
public static class Param {
public static final int LOAD = 1;
public static final int FOLLOW = 2;
@ -74,13 +74,13 @@ public class HashtagAction extends AsyncExecutor<HashtagAction.HashtagActionPara
final int mode;
final long id;
public HashtagActionParam(int mode, String name) {
public Param(int mode, String name) {
this.name = name;
this.mode = mode;
id = 0L;
}
public HashtagActionParam(int mode, String name, long id) {
public Param(int mode, String name, long id) {
this.name = name;
this.mode = mode;
this.id = id;
@ -90,7 +90,7 @@ public class HashtagAction extends AsyncExecutor<HashtagAction.HashtagActionPara
/**
*
*/
public static class HashtagActionResult {
public static class Result {
public static final int ERROR = -1;
public static final int LOAD = 10;
@ -105,7 +105,7 @@ public class HashtagAction extends AsyncExecutor<HashtagAction.HashtagActionPara
public final Hashtag hashtag;
public final int mode;
HashtagActionResult(int mode, @Nullable Hashtag hashtag, @Nullable ConnectionException exception) {
Result(int mode, @Nullable Hashtag hashtag, @Nullable ConnectionException exception) {
this.exception = exception;
this.hashtag = hashtag;
this.mode = mode;

View File

@ -18,7 +18,7 @@ import org.nuclearfog.twidda.ui.fragments.HashtagFragment;
* @author nuclearfog
* @see HashtagFragment
*/
public class HashtagLoader extends AsyncExecutor<HashtagLoader.HashtagLoaderParam, HashtagLoader.HashtagLoaderResult> {
public class HashtagLoader extends AsyncExecutor<HashtagLoader.Param, HashtagLoader.Result> {
private Connection connection;
private AppDatabase db;
@ -33,45 +33,45 @@ public class HashtagLoader extends AsyncExecutor<HashtagLoader.HashtagLoaderPara
@Override
protected HashtagLoaderResult doInBackground(@NonNull HashtagLoaderParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case HashtagLoaderParam.POPULAR_OFFLINE:
case Param.POPULAR_OFFLINE:
Trends trends = db.getTrends();
if (!trends.isEmpty()) {
return new HashtagLoaderResult(HashtagLoaderResult.POPULAR, trends, param.index, null);
return new Result(Result.POPULAR, trends, param.index, null);
}
// fall through
case HashtagLoaderParam.POPULAR_ONLINE:
case Param.POPULAR_ONLINE:
trends = connection.getTrends();
db.saveTrends(trends);
return new HashtagLoaderResult(HashtagLoaderResult.POPULAR, trends, param.index, null);
return new Result(Result.POPULAR, trends, param.index, null);
case HashtagLoaderParam.SEARCH:
case Param.SEARCH:
trends = connection.searchHashtags(param.trend);
return new HashtagLoaderResult(HashtagLoaderResult.SEARCH, trends, param.index, null);
return new Result(Result.SEARCH, trends, param.index, null);
case HashtagLoaderParam.FOLLOWING:
case Param.FOLLOWING:
trends = connection.showHashtagFollowing(param.cursor);
return new HashtagLoaderResult(HashtagLoaderResult.FOLLOWING, trends, param.index, null);
return new Result(Result.FOLLOWING, trends, param.index, null);
case HashtagLoaderParam.FEATURING:
case Param.FEATURING:
trends = connection.showHashtagFeaturing();
return new HashtagLoaderResult(HashtagLoaderResult.FEATURING, trends, param.index, null);
return new Result(Result.FEATURING, trends, param.index, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new HashtagLoaderResult(HashtagLoaderResult.ERROR, null, param.index, exception);
return new Result(Result.ERROR, null, param.index, exception);
}
}
/**
*
*/
public static class HashtagLoaderParam {
public static class Param {
public static final int POPULAR_OFFLINE = 1;
public static final int POPULAR_ONLINE = 2;
@ -86,7 +86,7 @@ public class HashtagLoader extends AsyncExecutor<HashtagLoader.HashtagLoaderPara
final int index;
final long cursor;
public HashtagLoaderParam(int mode, int index, String trend, long cursor) {
public Param(int mode, int index, String trend, long cursor) {
this.mode = mode;
this.trend = trend;
this.index = index;
@ -97,7 +97,7 @@ public class HashtagLoader extends AsyncExecutor<HashtagLoader.HashtagLoaderPara
/**
*
*/
public static class HashtagLoaderResult {
public static class Result {
public static final int ERROR = -1;
public static final int POPULAR = 20;
@ -112,7 +112,7 @@ public class HashtagLoader extends AsyncExecutor<HashtagLoader.HashtagLoaderPara
@Nullable
public final ConnectionException exception;
HashtagLoaderResult(int mode, @Nullable Trends trends, int index, @Nullable ConnectionException exception) {
Result(int mode, @Nullable Trends trends, int index, @Nullable ConnectionException exception) {
this.trends = trends;
this.exception = exception;
this.index = index;

View File

@ -25,7 +25,7 @@ import java.io.InputStream;
* @author nuclearfog
* @see ImageViewer
*/
public class ImageDownloader extends AsyncExecutor<ImageDownloader.ImageLoaderParam, ImageDownloader.ImageLoaderResult> {
public class ImageDownloader extends AsyncExecutor<ImageDownloader.Param, ImageDownloader.Result> {
private Connection connection;
@ -38,14 +38,14 @@ public class ImageDownloader extends AsyncExecutor<ImageDownloader.ImageLoaderPa
@Override
protected ImageLoaderResult doInBackground(@NonNull ImageLoaderParam request) {
protected Result doInBackground(@NonNull Param request) {
try {
// get input stream
MediaStatus mediaUpdate = connection.downloadImage(request.uri.toString());
InputStream input = mediaUpdate.getStream();
String mimeType = mediaUpdate.getMimeType();
if (input == null || mimeType == null) {
return new ImageLoaderResult(null, null);
return new Result(null, null);
}
// create file
String ext = '.' + mimeType.substring(mimeType.indexOf('/') + 1);
@ -53,7 +53,7 @@ public class ImageDownloader extends AsyncExecutor<ImageDownloader.ImageLoaderPa
File imageFile = new File(request.cacheFolder, StringUtils.getMD5signature(request.uri.toString()) + ext);
// if file exists with this signature, use this file
if (imageFile.exists()) {
return new ImageLoaderResult(Uri.fromFile(imageFile), null);
return new Result(Uri.fromFile(imageFile), null);
}
// copy image to cache folder
imageFile.createNewFile();
@ -65,9 +65,9 @@ public class ImageDownloader extends AsyncExecutor<ImageDownloader.ImageLoaderPa
input.close();
output.close();
// create Uri from cached image
return new ImageLoaderResult(Uri.fromFile(imageFile), null);
return new Result(Uri.fromFile(imageFile), null);
} catch (ConnectionException exception) {
return new ImageLoaderResult(null, exception);
return new Result(null, exception);
} catch (IOException e) {
return null;
}
@ -76,12 +76,12 @@ public class ImageDownloader extends AsyncExecutor<ImageDownloader.ImageLoaderPa
/**
* Async request class to send information required to execute the task
*/
public static class ImageLoaderParam {
public static class Param {
final Uri uri;
final File cacheFolder;
public ImageLoaderParam(Uri uri, File cacheFolder) {
public Param(Uri uri, File cacheFolder) {
this.cacheFolder = cacheFolder;
this.uri = uri;
}
@ -90,14 +90,14 @@ public class ImageDownloader extends AsyncExecutor<ImageDownloader.ImageLoaderPa
/**
* Async result class
*/
public static class ImageLoaderResult {
public static class Result {
@Nullable
public final Uri uri;
@Nullable
public final ConnectionException exception;
ImageLoaderResult(@Nullable Uri uri, @Nullable ConnectionException exception) {
Result(@Nullable Uri uri, @Nullable ConnectionException exception) {
this.exception = exception;
this.uri = uri;
}

View File

@ -14,11 +14,11 @@ import java.io.OutputStream;
* @author nuclearfog
* @see MediaActivity
*/
public class ImageSaver extends AsyncExecutor<ImageSaver.ImageParam, Boolean> {
public class ImageSaver extends AsyncExecutor<ImageSaver.Param, Boolean> {
@Override
protected Boolean doInBackground(@NonNull ImageParam param) {
protected Boolean doInBackground(@NonNull Param param) {
try {
int length;
byte[] buffer = new byte[4096];
@ -36,12 +36,12 @@ public class ImageSaver extends AsyncExecutor<ImageSaver.ImageParam, Boolean> {
/**
*
*/
public static class ImageParam {
public static class Param {
final InputStream inputStream;
final OutputStream outputStream;
public ImageParam(InputStream inputStream, OutputStream outputStream) {
public Param(InputStream inputStream, OutputStream outputStream) {
this.inputStream = inputStream;
this.outputStream = outputStream;
}

View File

@ -25,7 +25,7 @@ import org.nuclearfog.twidda.ui.activities.LoginActivity;
* @author nuclearfog
* @see LoginActivity
*/
public class LoginAction extends AsyncExecutor<LoginAction.LoginParam, LoginAction.LoginResult> {
public class LoginAction extends AsyncExecutor<LoginAction.Param, LoginAction.Result> {
private AppDatabase database;
private GlobalSettings settings;
@ -42,11 +42,11 @@ public class LoginAction extends AsyncExecutor<LoginAction.LoginParam, LoginActi
@Override
protected LoginResult doInBackground(@NonNull LoginParam param) {
protected Result doInBackground(@NonNull Param param) {
Connection connection = manager.getConnection(param.configuration);
try {
switch (param.mode) {
case LoginParam.MODE_REQUEST:
case Param.MODE_REQUEST:
if (settings.isLoggedIn()) {
Account login = settings.getLogin();
if (!database.containsLogin(login.getId())) {
@ -54,9 +54,9 @@ public class LoginAction extends AsyncExecutor<LoginAction.LoginParam, LoginActi
}
}
ConnectionResult result = connection.getAuthorisationLink(param.connection);
return new LoginResult(LoginResult.MODE_REQUEST, null, result, null);
return new Result(Result.MODE_REQUEST, null, result, null);
case LoginParam.MODE_LOGIN:
case Param.MODE_LOGIN:
// login with pin and access token
Account account = connection.loginApp(param.connection, param.code);
// get instance information
@ -78,20 +78,20 @@ public class LoginAction extends AsyncExecutor<LoginAction.LoginParam, LoginActi
settings.setPushEnabled(false);
}
}
return new LoginResult(LoginResult.MODE_LOGIN, account, null, null);
return new Result(Result.MODE_LOGIN, account, null, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new LoginResult(LoginResult.MODE_ERROR, null, null, exception);
return new Result(Result.MODE_ERROR, null, null, exception);
}
}
/**
*
*/
public static class LoginParam {
public static class Param {
public static final int MODE_REQUEST = 1;
public static final int MODE_LOGIN = 2;
@ -101,7 +101,7 @@ public class LoginAction extends AsyncExecutor<LoginAction.LoginParam, LoginActi
final String code;
final int mode;
public LoginParam(int mode, Configuration configuration, ConnectionUpdate connection, String code) {
public Param(int mode, Configuration configuration, ConnectionUpdate connection, String code) {
this.connection = connection;
this.configuration = configuration;
this.mode = mode;
@ -112,7 +112,7 @@ public class LoginAction extends AsyncExecutor<LoginAction.LoginParam, LoginActi
/**
*
*/
public static class LoginResult {
public static class Result {
public static final int MODE_ERROR = -1;
public static final int MODE_REQUEST = 3;
@ -126,7 +126,7 @@ public class LoginAction extends AsyncExecutor<LoginAction.LoginParam, LoginActi
@Nullable
public final Account account;
LoginResult(int mode, @Nullable Account accout, @Nullable ConnectionResult connection, @Nullable ConnectionException exception) {
Result(int mode, @Nullable Account accout, @Nullable ConnectionResult connection, @Nullable ConnectionException exception) {
this.connection = connection;
this.exception = exception;
this.account = accout;

View File

@ -16,7 +16,7 @@ import org.nuclearfog.twidda.model.Notification;
*
* @author nuclearfog
*/
public class NotificationAction extends AsyncExecutor<NotificationAction.NotificationActionParam, NotificationAction.NotificationActionResult> {
public class NotificationAction extends AsyncExecutor<NotificationAction.Param, NotificationAction.Result> {
private Connection connection;
private AppDatabase db;
@ -31,23 +31,23 @@ public class NotificationAction extends AsyncExecutor<NotificationAction.Notific
@Override
protected NotificationActionResult doInBackground(@NonNull NotificationActionParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case NotificationActionParam.DATABASE:
case Param.DATABASE:
Notification result = db.getNotification(param.id);
if (result != null) {
return new NotificationActionResult(NotificationActionResult.DATABASE, param.id, result, null);
return new Result(Result.DATABASE, param.id, result, null);
}
case NotificationActionParam.ONLINE:
case Param.ONLINE:
result = connection.getNotification(param.id);
return new NotificationActionResult(NotificationActionResult.ONLINE, param.id, result, null);
return new Result(Result.ONLINE, param.id, result, null);
case NotificationActionParam.DISMISS:
case Param.DISMISS:
connection.dismissNotification(param.id);
db.removeNotification(param.id);
return new NotificationActionResult(NotificationActionResult.DISMISS, param.id, null, null);
return new Result(Result.DISMISS, param.id, null, null);
default:
return null;
@ -56,14 +56,14 @@ public class NotificationAction extends AsyncExecutor<NotificationAction.Notific
if (exception.getErrorCode() == ConnectionException.RESOURCE_NOT_FOUND) {
db.removeNotification(param.id);
}
return new NotificationActionResult(NotificationActionResult.ERROR, param.id, null, exception);
return new Result(Result.ERROR, param.id, null, exception);
}
}
/**
*
*/
public static class NotificationActionParam {
public static class Param {
public static final int DATABASE = 1;
public static final int ONLINE = 2;
@ -72,7 +72,7 @@ public class NotificationAction extends AsyncExecutor<NotificationAction.Notific
final int mode;
final long id;
public NotificationActionParam(int mode, long id) {
public Param(int mode, long id) {
this.mode = mode;
this.id = id;
}
@ -81,7 +81,7 @@ public class NotificationAction extends AsyncExecutor<NotificationAction.Notific
/**
*
*/
public static class NotificationActionResult {
public static class Result {
public static final int ERROR = -1;
public static final int DATABASE = 3;
@ -95,7 +95,7 @@ public class NotificationAction extends AsyncExecutor<NotificationAction.Notific
public final int mode;
public final long id;
NotificationActionResult(int mode, long id, @Nullable Notification notification, @Nullable ConnectionException exception) {
Result(int mode, long id, @Nullable Notification notification, @Nullable ConnectionException exception) {
this.exception = exception;
this.notification = notification;
this.mode = mode;

View File

@ -18,7 +18,7 @@ import org.nuclearfog.twidda.ui.fragments.NotificationFragment;
*
* @author nuclearfog
*/
public class NotificationLoader extends AsyncExecutor<NotificationLoader.NotificationLoaderParam, NotificationLoader.NotificationLoaderResult> {
public class NotificationLoader extends AsyncExecutor<NotificationLoader.Param, NotificationLoader.Result> {
private Connection connection;
private AppDatabase db;
@ -33,10 +33,10 @@ public class NotificationLoader extends AsyncExecutor<NotificationLoader.Notific
@Override
protected NotificationLoaderResult doInBackground(@NonNull NotificationLoaderParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case NotificationLoaderParam.LOAD_ALL:
case Param.LOAD_ALL:
Notifications result;
if (param.minId == 0L && param.maxId == 0L) {
result = db.getNotifications();
@ -50,9 +50,9 @@ public class NotificationLoader extends AsyncExecutor<NotificationLoader.Notific
db.saveNotifications(result);
}
}
return new NotificationLoaderResult(result, param.position, null);
return new Result(result, param.position, null);
case NotificationLoaderParam.LOAD_UNREAD:
case Param.LOAD_UNREAD:
// load (known) notifications from database first
Notifications notifications = db.getNotifications();
// then load new notifications using the latest known notification
@ -61,20 +61,20 @@ public class NotificationLoader extends AsyncExecutor<NotificationLoader.Notific
if (lastNotification != null)
minId = lastNotification.getId();
result = connection.getNotifications(minId, 0L);
return new NotificationLoaderResult(result, 0, null);
return new Result(result, 0, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new NotificationLoaderResult(null, param.position, exception);
return new Result(null, param.position, exception);
}
}
/**
*
*/
public static class NotificationLoaderParam {
public static class Param {
public static final int LOAD_ALL = 1;
public static final int LOAD_UNREAD = 2;
@ -83,7 +83,7 @@ public class NotificationLoader extends AsyncExecutor<NotificationLoader.Notific
final long minId, maxId;
final int mode;
public NotificationLoaderParam(int mode, int position, long minId, long maxId) {
public Param(int mode, int position, long minId, long maxId) {
this.position = position;
this.minId = minId;
this.maxId = maxId;
@ -94,7 +94,7 @@ public class NotificationLoader extends AsyncExecutor<NotificationLoader.Notific
/**
*
*/
public static class NotificationLoaderResult {
public static class Result {
public final int position;
@Nullable
@ -102,7 +102,7 @@ public class NotificationLoader extends AsyncExecutor<NotificationLoader.Notific
@Nullable
public final ConnectionException exception;
NotificationLoaderResult(@Nullable Notifications notifications, int position, @Nullable ConnectionException exception) {
Result(@Nullable Notifications notifications, int position, @Nullable ConnectionException exception) {
this.notifications = notifications;
this.exception = exception;
this.position = position;

View File

@ -17,7 +17,7 @@ import java.util.Arrays;
*
* @author nuclearfog
*/
public class PollAction extends AsyncExecutor<PollAction.PollActionParam, PollAction.PollActionResult> {
public class PollAction extends AsyncExecutor<PollAction.Param, PollAction.Result> {
private Connection connection;
@ -30,29 +30,29 @@ public class PollAction extends AsyncExecutor<PollAction.PollActionParam, PollAc
@Override
protected PollActionResult doInBackground(@NonNull PollActionParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case PollActionParam.LOAD:
case Param.LOAD:
Poll poll = connection.getPoll(param.poll.getId());
return new PollActionResult(PollActionResult.LOAD, poll, null);
return new Result(Result.LOAD, poll, null);
case PollActionParam.VOTE:
case Param.VOTE:
poll = connection.votePoll(param.poll, param.selection);
return new PollActionResult(PollActionResult.VOTE, poll, null);
return new Result(Result.VOTE, poll, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new PollActionResult(PollActionResult.ERROR, null, exception);
return new Result(Result.ERROR, null, exception);
}
}
/**
*
*/
public static class PollActionParam {
public static class Param {
public static final int LOAD = 1;
public static final int VOTE = 2;
@ -61,7 +61,7 @@ public class PollAction extends AsyncExecutor<PollAction.PollActionParam, PollAc
final Poll poll;
final int[] selection;
public PollActionParam(int mode, Poll poll, int[] selection) {
public Param(int mode, Poll poll, int[] selection) {
this.mode = mode;
this.poll = poll;
this.selection = Arrays.copyOf(selection, selection.length);
@ -71,7 +71,7 @@ public class PollAction extends AsyncExecutor<PollAction.PollActionParam, PollAc
/**
*
*/
public static class PollActionResult {
public static class Result {
public static final int ERROR = -1;
public static final int LOAD = 3;
@ -83,7 +83,7 @@ public class PollAction extends AsyncExecutor<PollAction.PollActionParam, PollAc
@Nullable
public final ConnectionException exception;
PollActionResult(int mode, @Nullable Poll poll, @Nullable ConnectionException exception) {
Result(int mode, @Nullable Poll poll, @Nullable ConnectionException exception) {
this.mode = mode;
this.poll = poll;
this.exception = exception;

View File

@ -16,7 +16,7 @@ import org.nuclearfog.twidda.model.WebPush;
*
* @author nuclearfog
*/
public class PushUpdater extends AsyncExecutor<PushUpdate, PushUpdater.PushUpdateResult> {
public class PushUpdater extends AsyncExecutor<PushUpdate, PushUpdater.Result> {
private Connection connection;
private GlobalSettings settings;
@ -31,25 +31,25 @@ public class PushUpdater extends AsyncExecutor<PushUpdate, PushUpdater.PushUpdat
@Override
protected PushUpdateResult doInBackground(@NonNull PushUpdate param) {
protected Result doInBackground(@NonNull PushUpdate param) {
try {
WebPush webpush = connection.updatePush(param);
settings.setWebPush(webpush);
return new PushUpdateResult(webpush, null);
return new Result(webpush, null);
} catch (ConnectionException e) {
return new PushUpdateResult(null, e);
return new Result(null, e);
}
}
/**
*
*/
public static class PushUpdateResult {
public static class Result {
public final WebPush push;
public final ConnectionException exception;
PushUpdateResult(WebPush push, ConnectionException exception) {
Result(WebPush push, ConnectionException exception) {
this.push = push;
this.exception = exception;
}

View File

@ -18,7 +18,7 @@ import org.nuclearfog.twidda.ui.activities.ProfileActivity;
* @author nuclearfog
* @see ProfileActivity
*/
public class RelationLoader extends AsyncExecutor<RelationLoader.RelationParam, RelationLoader.RelationResult> {
public class RelationLoader extends AsyncExecutor<RelationLoader.Param, RelationLoader.Result> {
private Connection connection;
private AppDatabase db;
@ -33,59 +33,59 @@ public class RelationLoader extends AsyncExecutor<RelationLoader.RelationParam,
@Override
protected RelationResult doInBackground(@NonNull RelationParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case RelationParam.LOAD:
case Param.LOAD:
Relation relation = connection.getUserRelationship(param.id);
return new RelationResult(RelationResult.LOAD, relation);
return new Result(Result.LOAD, relation);
case RelationParam.FOLLOW:
case Param.FOLLOW:
relation = connection.followUser(param.id);
return new RelationResult(RelationResult.FOLLOW, relation);
return new Result(Result.FOLLOW, relation);
case RelationParam.UNFOLLOW:
case Param.UNFOLLOW:
relation = connection.unfollowUser(param.id);
return new RelationResult(RelationResult.UNFOLLOW, relation);
return new Result(Result.UNFOLLOW, relation);
case RelationParam.BLOCK:
case Param.BLOCK:
relation = connection.blockUser(param.id);
db.muteUser(param.id, true);
return new RelationResult(RelationResult.BLOCK, relation);
return new Result(Result.BLOCK, relation);
case RelationParam.UNBLOCK:
case Param.UNBLOCK:
relation = connection.unblockUser(param.id);
// remove from exclude list only if user is not muted
if (!relation.isMuted()) {
db.muteUser(param.id, false);
}
return new RelationResult(RelationResult.UNBLOCK, relation);
return new Result(Result.UNBLOCK, relation);
case RelationParam.MUTE:
case Param.MUTE:
relation = connection.muteUser(param.id);
db.muteUser(param.id, true);
return new RelationResult(RelationResult.MUTE, relation);
return new Result(Result.MUTE, relation);
case RelationParam.UNMUTE:
case Param.UNMUTE:
relation = connection.unmuteUser(param.id);
// remove from exclude list only if user is not blocked
if (!relation.isBlocked()) {
db.muteUser(param.id, false);
}
return new RelationResult(RelationResult.UNMUTE, relation);
return new Result(Result.UNMUTE, relation);
default:
return null;
}
} catch (ConnectionException exception) {
return new RelationResult(RelationResult.ERROR, null, exception);
return new Result(Result.ERROR, null, exception);
}
}
/**
*
*/
public static class RelationParam {
public static class Param {
public static final int LOAD = 1;
public static final int FOLLOW = 2;
@ -98,7 +98,7 @@ public class RelationLoader extends AsyncExecutor<RelationLoader.RelationParam,
final long id;
final int mode;
public RelationParam(long id, int mode) {
public Param(long id, int mode) {
this.id = id;
this.mode = mode;
}
@ -107,7 +107,7 @@ public class RelationLoader extends AsyncExecutor<RelationLoader.RelationParam,
/**
*
*/
public static class RelationResult {
public static class Result {
public static final int LOAD = 8;
public static final int FOLLOW = 9;
@ -124,11 +124,11 @@ public class RelationLoader extends AsyncExecutor<RelationLoader.RelationParam,
@Nullable
public final ConnectionException exception;
RelationResult(int mode, Relation relation) {
Result(int mode, Relation relation) {
this(mode, relation, null);
}
RelationResult(int mode, @Nullable Relation relation, @Nullable ConnectionException exception) {
Result(int mode, @Nullable Relation relation, @Nullable ConnectionException exception) {
this.relation = relation;
this.exception = exception;
this.mode = mode;

View File

@ -16,7 +16,7 @@ import org.nuclearfog.twidda.backend.helper.update.ReportUpdate;
* @author nuclearfog
* @see org.nuclearfog.twidda.ui.dialogs.ReportDialog
*/
public class ReportUpdater extends AsyncExecutor<ReportUpdate, ReportUpdater.ReportResult> {
public class ReportUpdater extends AsyncExecutor<ReportUpdate, ReportUpdater.Result> {
private Connection connection;
@ -29,25 +29,25 @@ public class ReportUpdater extends AsyncExecutor<ReportUpdate, ReportUpdater.Rep
@Override
protected ReportResult doInBackground(@NonNull ReportUpdate param) {
protected Result doInBackground(@NonNull ReportUpdate param) {
try {
connection.createReport(param);
return new ReportResult(true, null);
return new Result(true, null);
} catch (ConnectionException exception) {
return new ReportResult(false, exception);
return new Result(false, exception);
}
}
/**
*
*/
public static class ReportResult {
public static class Result {
public final boolean reported;
@Nullable
public final ConnectionException exception;
ReportResult(boolean reported, @Nullable ConnectionException exception) {
Result(boolean reported, @Nullable ConnectionException exception) {
this.exception = exception;
this.reported = reported;
}

View File

@ -18,7 +18,7 @@ import org.nuclearfog.twidda.ui.activities.StatusActivity;
* @author nuclearfog
* @see StatusActivity
*/
public class StatusAction extends AsyncExecutor<StatusAction.StatusParam, StatusAction.StatusResult> {
public class StatusAction extends AsyncExecutor<StatusAction.Param, StatusAction.Result> {
private Connection connection;
private AppDatabase db;
@ -33,70 +33,70 @@ public class StatusAction extends AsyncExecutor<StatusAction.StatusParam, Status
@Override
protected StatusResult doInBackground(@NonNull StatusParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case StatusParam.DATABASE:
case Param.DATABASE:
Status status = db.getStatus(param.id);
if (status != null) {
return new StatusResult(StatusResult.DATABASE, status);
return new Result(Result.DATABASE, status);
}
// fall through
case StatusParam.ONLINE:
case Param.ONLINE:
status = connection.showStatus(param.id);
if (db.containsStatus(param.id)) {
// update status if there is a database entry
db.saveStatus(status);
}
return new StatusResult(StatusResult.ONLINE, status);
return new Result(Result.ONLINE, status);
case StatusParam.DELETE:
case Param.DELETE:
connection.deleteStatus(param.id);
db.removeStatus(param.id);
return new StatusResult(StatusResult.DELETE, null);
return new Result(Result.DELETE, null);
case StatusParam.REPOST:
case Param.REPOST:
status = connection.repostStatus(param.id);
db.saveStatus(status);
if (status.getEmbeddedStatus() != null)
return new StatusResult(StatusResult.REPOST, status.getEmbeddedStatus());
return new StatusResult(StatusResult.REPOST, status);
return new Result(Result.REPOST, status.getEmbeddedStatus());
return new Result(Result.REPOST, status);
case StatusParam.UNREPOST:
case Param.UNREPOST:
status = connection.removeRepost(param.id);
db.saveStatus(status);
return new StatusResult(StatusResult.UNREPOST, status);
return new Result(Result.UNREPOST, status);
case StatusParam.FAVORITE:
case Param.FAVORITE:
status = connection.favoriteStatus(param.id);
db.saveToFavorits(status);
return new StatusResult(StatusResult.FAVORITE, status);
return new Result(Result.FAVORITE, status);
case StatusParam.UNFAVORITE:
case Param.UNFAVORITE:
status = connection.unfavoriteStatus(param.id);
db.removeFromFavorite(status);
return new StatusResult(StatusResult.UNFAVORITE, status);
return new Result(Result.UNFAVORITE, status);
case StatusParam.BOOKMARK:
case Param.BOOKMARK:
status = connection.bookmarkStatus(param.id);
db.saveToBookmarks(status);
return new StatusResult(StatusResult.BOOKMARK, status);
return new Result(Result.BOOKMARK, status);
case StatusParam.UNBOOKMARK:
case Param.UNBOOKMARK:
status = connection.removeBookmark(param.id);
db.removeFromBookmarks(status);
return new StatusResult(StatusResult.UNBOOKMARK, status);
return new Result(Result.UNBOOKMARK, status);
case StatusParam.HIDE:
case Param.HIDE:
connection.muteConversation(param.id);
db.hideStatus(param.id, true);
return new StatusResult(StatusResult.HIDE, null);
return new Result(Result.HIDE, null);
case StatusParam.UNHIDE:
case Param.UNHIDE:
connection.unmuteConversation(param.id);
db.hideStatus(param.id, false);
return new StatusResult(StatusResult.UNHIDE, null);
return new Result(Result.UNHIDE, null);
default:
return null;
@ -106,14 +106,14 @@ public class StatusAction extends AsyncExecutor<StatusAction.StatusParam, Status
// delete database entry if status was not found
db.removeStatus(param.id);
}
return new StatusResult(StatusResult.ERROR, null, exception);
return new Result(Result.ERROR, null, exception);
}
}
/**
*
*/
public static class StatusParam {
public static class Param {
public static final int ONLINE = 1;
public static final int DATABASE = 2;
@ -130,7 +130,7 @@ public class StatusAction extends AsyncExecutor<StatusAction.StatusParam, Status
final int mode;
final long id;
public StatusParam(int mode, long id) {
public Param(int mode, long id) {
this.mode = mode;
this.id = id;
}
@ -139,7 +139,7 @@ public class StatusAction extends AsyncExecutor<StatusAction.StatusParam, Status
/**
*
*/
public static class StatusResult {
public static class Result {
public static final int ERROR = -1;
public static final int ONLINE = 12;
@ -160,11 +160,11 @@ public class StatusAction extends AsyncExecutor<StatusAction.StatusParam, Status
@Nullable
public final ConnectionException exception;
StatusResult(int mode, Status status) {
Result(int mode, Status status) {
this(mode, status, null);
}
StatusResult(int mode, @Nullable Status status, @Nullable ConnectionException exception) {
Result(int mode, @Nullable Status status, @Nullable ConnectionException exception) {
this.mode = mode;
this.status = status;
this.exception = exception;

View File

@ -16,7 +16,7 @@ import org.nuclearfog.twidda.model.Filter;
*
* @author nuclearfog
*/
public class StatusFilterAction extends AsyncExecutor<StatusFilterAction.FilterActionParam, StatusFilterAction.FilterActionResult> {
public class StatusFilterAction extends AsyncExecutor<StatusFilterAction.Param, StatusFilterAction.Result> {
private Connection connection;
@ -29,32 +29,32 @@ public class StatusFilterAction extends AsyncExecutor<StatusFilterAction.FilterA
@Override
protected FilterActionResult doInBackground(@NonNull FilterActionParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case FilterActionParam.UPDATE:
case Param.UPDATE:
if (param.update != null) {
Filter filter = connection.updateFilter(param.update);
return new FilterActionResult(FilterActionResult.UPDATE, param.id, filter, null);
return new Result(Result.UPDATE, param.id, filter, null);
}
return null;
case FilterActionParam.DELETE:
case Param.DELETE:
connection.deleteFilter(param.id);
return new FilterActionResult(FilterActionResult.DELETE, param.id, null, null);
return new Result(Result.DELETE, param.id, null, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new FilterActionResult(FilterActionResult.ERROR, param.id, null, exception);
return new Result(Result.ERROR, param.id, null, exception);
}
}
/**
*
*/
public static class FilterActionParam {
public static class Param {
public static final int UPDATE = 1;
public static final int DELETE = 2;
@ -64,7 +64,7 @@ public class StatusFilterAction extends AsyncExecutor<StatusFilterAction.FilterA
final long id;
final int mode;
public FilterActionParam(int mode, long id, @Nullable FilterUpdate update) {
public Param(int mode, long id, @Nullable FilterUpdate update) {
this.mode = mode;
this.id = id;
this.update = update;
@ -74,7 +74,7 @@ public class StatusFilterAction extends AsyncExecutor<StatusFilterAction.FilterA
/**
*
*/
public static class FilterActionResult {
public static class Result {
public static final int UPDATE = 3;
public static final int DELETE = 4;
@ -87,7 +87,7 @@ public class StatusFilterAction extends AsyncExecutor<StatusFilterAction.FilterA
public final long id;
public final int mode;
public FilterActionResult(int mode, long id, @Nullable Filter filter, @Nullable ConnectionException exception) {
public Result(int mode, long id, @Nullable Filter filter, @Nullable ConnectionException exception) {
this.mode = mode;
this.id = id;
this.filter = filter;

View File

@ -15,7 +15,7 @@ import org.nuclearfog.twidda.model.lists.Filters;
*
* @author nuclearfog
*/
public class StatusFilterLoader extends AsyncExecutor<Void, StatusFilterLoader.FilterLoaderResult> {
public class StatusFilterLoader extends AsyncExecutor<Void, StatusFilterLoader.Result> {
private Connection connection;
@ -28,26 +28,26 @@ public class StatusFilterLoader extends AsyncExecutor<Void, StatusFilterLoader.F
@Override
protected FilterLoaderResult doInBackground(@NonNull Void param) {
protected Result doInBackground(@NonNull Void param) {
try {
Filters result = connection.getFilter();
return new FilterLoaderResult(result, null);
return new Result(result, null);
} catch (ConnectionException exception) {
return new FilterLoaderResult(null, exception);
return new Result(null, exception);
}
}
/**
*
*/
public static class FilterLoaderResult {
public static class Result {
@Nullable
public final Filters filters;
@Nullable
public final ConnectionException exception;
FilterLoaderResult(@Nullable Filters filters, @Nullable ConnectionException exception) {
Result(@Nullable Filters filters, @Nullable ConnectionException exception) {
this.filters = filters;
this.exception = exception;
}

View File

@ -18,7 +18,7 @@ import org.nuclearfog.twidda.ui.fragments.StatusFragment;
* @author nuclearfog
* @see StatusFragment
*/
public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, StatusLoader.StatusResult> {
public class StatusLoader extends AsyncExecutor<StatusLoader.Param, StatusLoader.Result> {
private Connection connection;
private AppDatabase db;
@ -33,12 +33,12 @@ public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, St
@Override
protected StatusResult doInBackground(@NonNull StatusParameter param) {
protected Result doInBackground(@NonNull Param param) {
try {
Statuses statuses;
switch (param.type) {
case StatusParameter.HOME:
if (param.minId == StatusParameter.NO_ID && param.maxId == StatusParameter.NO_ID) {
case Param.HOME:
if (param.minId == Param.NO_ID && param.maxId == Param.NO_ID) {
statuses = db.getHomeTimeline();
if (statuses.isEmpty()) {
statuses = connection.getHomeTimeline(0L, 0L);
@ -46,14 +46,14 @@ public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, St
}
} else {
statuses = connection.getHomeTimeline(param.minId, param.maxId);
if (param.maxId == StatusParameter.NO_ID) {
if (param.maxId == Param.NO_ID) {
db.saveHomeTimeline(statuses);
}
}
return new StatusResult(statuses, param.pos, null);
return new Result(statuses, param.pos, null);
case StatusParameter.USER:
if (param.minId == StatusParameter.NO_ID && param.maxId == StatusParameter.NO_ID) {
case Param.USER:
if (param.minId == Param.NO_ID && param.maxId == Param.NO_ID) {
statuses = db.getUserTimeline(param.id);
if (statuses.isEmpty()) {
statuses = connection.getUserTimeline(param.id, 0L, 0L);
@ -61,14 +61,14 @@ public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, St
}
} else {
statuses = connection.getUserTimeline(param.id, param.minId, param.maxId);
if (param.maxId == StatusParameter.NO_ID) {
if (param.maxId == Param.NO_ID) {
db.saveUserTimeline(statuses);
}
}
return new StatusResult(statuses, param.pos, null);
return new Result(statuses, param.pos, null);
case StatusParameter.FAVORIT:
if (param.minId == StatusParameter.NO_ID && param.maxId == StatusParameter.NO_ID) {
case Param.FAVORIT:
if (param.minId == Param.NO_ID && param.maxId == Param.NO_ID) {
statuses = db.getUserFavorites(param.id);
if (statuses.isEmpty()) {
statuses = connection.getUserFavorits(param.id, 0L, 0L);
@ -76,15 +76,15 @@ public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, St
}
} else {
statuses = connection.getUserFavorits(param.id, 0L, param.maxId);
if (param.maxId == StatusParameter.NO_ID) {
if (param.maxId == Param.NO_ID) {
db.saveFavoriteTimeline(statuses, param.id);
return new StatusResult(statuses, StatusResult.CLEAR, null);
return new Result(statuses, Result.CLEAR, null);
}
}
return new StatusResult(statuses, param.pos, null);
return new Result(statuses, param.pos, null);
case StatusParameter.BOOKMARKS:
if (param.minId == StatusParameter.NO_ID && param.maxId == StatusParameter.NO_ID) {
case Param.BOOKMARKS:
if (param.minId == Param.NO_ID && param.maxId == Param.NO_ID) {
statuses = db.getUserBookmarks(param.id);
if (statuses.isEmpty()) {
statuses = connection.getUserBookmarks(0L, 0L);
@ -92,19 +92,19 @@ public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, St
}
} else {
statuses = connection.getUserBookmarks(0L, param.maxId);
if (param.maxId == StatusParameter.NO_ID) {
if (param.maxId == Param.NO_ID) {
db.saveBookmarkTimeline(statuses, param.id);
return new StatusResult(statuses, StatusResult.CLEAR, null);
return new Result(statuses, Result.CLEAR, null);
}
}
return new StatusResult(statuses, param.pos, null);
return new Result(statuses, param.pos, null);
case StatusParameter.REPLIES_LOCAL:
case Param.REPLIES_LOCAL:
statuses = db.getReplies(param.id);
return new StatusResult(statuses, param.pos, null);
return new Result(statuses, param.pos, null);
case StatusParameter.REPLIES:
if (param.minId == StatusParameter.NO_ID && param.maxId == StatusParameter.NO_ID) {
case Param.REPLIES:
if (param.minId == Param.NO_ID && param.maxId == Param.NO_ID) {
statuses = db.getReplies(param.id);
if (statuses.isEmpty()) {
statuses = connection.getStatusReplies(param.id, 0L, 0L, param.search);
@ -114,36 +114,36 @@ public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, St
}
} else {
statuses = connection.getStatusReplies(param.id, param.minId, param.maxId, param.search);
if (param.maxId == StatusParameter.NO_ID && db.containsStatus(param.id)) {
if (param.maxId == Param.NO_ID && db.containsStatus(param.id)) {
db.saveReplyTimeline(statuses);
}
}
return new StatusResult(statuses, param.pos, null);
return new Result(statuses, param.pos, null);
case StatusParameter.SEARCH:
case Param.SEARCH:
statuses = connection.searchStatuses(param.search, param.minId, param.maxId);
return new StatusResult(statuses, param.pos, null);
return new Result(statuses, param.pos, null);
case StatusParameter.USERLIST:
case Param.USERLIST:
statuses = connection.getUserlistStatuses(param.id, param.minId, param.maxId);
return new StatusResult(statuses, param.pos, null);
return new Result(statuses, param.pos, null);
case StatusParameter.PUBLIC:
case Param.PUBLIC:
statuses = connection.getPublicTimeline(param.minId, param.maxId);
return new StatusResult(statuses, param.pos, null);
return new Result(statuses, param.pos, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new StatusResult(null, param.pos, exception);
return new Result(null, param.pos, exception);
}
}
/**
*
*/
public static class StatusParameter {
public static class Param {
public static final long NO_ID = 0L;
@ -161,7 +161,7 @@ public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, St
final int type, pos;
final long id, minId, maxId;
public StatusParameter(int type, long id, long minId, long maxId, int pos, String search) {
public Param(int type, long id, long minId, long maxId, int pos, String search) {
this.type = type;
this.id = id;
this.minId = minId;
@ -174,7 +174,7 @@ public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, St
/**
*
*/
public static class StatusResult {
public static class Result {
public static final int CLEAR = -1;
@ -184,7 +184,7 @@ public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, St
@Nullable
public final ConnectionException exception;
StatusResult(@Nullable Statuses statuses, int position, @Nullable ConnectionException exception) {
Result(@Nullable Statuses statuses, int position, @Nullable ConnectionException exception) {
this.statuses = statuses;
this.position = position;
this.exception = exception;

View File

@ -22,7 +22,7 @@ import java.util.List;
* @author nuclearfog
* @see StatusEditor
*/
public class StatusUpdater extends AsyncExecutor<StatusUpdate, StatusUpdater.StatusUpdateResult> {
public class StatusUpdater extends AsyncExecutor<StatusUpdate, StatusUpdater.Result> {
private Connection connection;
@ -35,7 +35,7 @@ public class StatusUpdater extends AsyncExecutor<StatusUpdate, StatusUpdater.Sta
@Override
protected StatusUpdateResult doInBackground(@NonNull StatusUpdate update) throws InterruptedException {
protected Result doInBackground(@NonNull StatusUpdate update) throws InterruptedException {
try {
// upload media first
List<Long> mediaIds = new LinkedList<>();
@ -47,9 +47,9 @@ public class StatusUpdater extends AsyncExecutor<StatusUpdate, StatusUpdater.Sta
}
// upload status
Status status = connection.updateStatus(update, mediaIds);
return new StatusUpdateResult(status, null);
return new Result(status, null);
} catch (ConnectionException exception) {
return new StatusUpdateResult(null, exception);
return new Result(null, exception);
} finally {
update.close();
}
@ -58,14 +58,14 @@ public class StatusUpdater extends AsyncExecutor<StatusUpdate, StatusUpdater.Sta
/**
*
*/
public static class StatusUpdateResult {
public static class Result {
@Nullable
public final Status status;
@Nullable
public final ConnectionException exception;
StatusUpdateResult(@Nullable Status status, @Nullable ConnectionException exception) {
Result(@Nullable Status status, @Nullable ConnectionException exception) {
this.status = status;
this.exception = exception;
}

View File

@ -23,7 +23,7 @@ import java.util.TreeMap;
*
* @author nuclearfog
*/
public class TextEmojiLoader extends AsyncExecutor<TextEmojiLoader.EmojiParam, TextEmojiLoader.EmojiResult> {
public class TextEmojiLoader extends AsyncExecutor<TextEmojiLoader.Param, TextEmojiLoader.Result> {
private Connection connection;
private EmojiCache cache;
@ -38,7 +38,7 @@ public class TextEmojiLoader extends AsyncExecutor<TextEmojiLoader.EmojiParam, T
@Override
protected EmojiResult doInBackground(@NonNull EmojiParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
Map<String, Bitmap> result = new TreeMap<>();
for (Emoji emoji : param.emojis) {
@ -57,27 +57,27 @@ public class TextEmojiLoader extends AsyncExecutor<TextEmojiLoader.EmojiParam, T
result.put(emoji.getCode(), icon);
}
cache.trimCache();
return new EmojiResult(param.id, param.spannable, result);
return new Result(param.id, param.spannable, result);
} catch (Exception exception) {
return new EmojiResult(param.id, param.spannable, null);
return new Result(param.id, param.spannable, null);
}
}
/**
*
*/
public static class EmojiParam {
public static class Param {
final Emoji[] emojis;
final Spannable spannable;
final long id;
final int size;
public EmojiParam(Emoji[] emojis, Spannable spannable, int size) {
public Param(Emoji[] emojis, Spannable spannable, int size) {
this(0L, emojis, spannable, size);
}
public EmojiParam(long id, Emoji[] emojis, Spannable spannable, int size) {
public Param(long id, Emoji[] emojis, Spannable spannable, int size) {
this.emojis = emojis;
this.spannable = spannable;
this.size = size;
@ -88,14 +88,14 @@ public class TextEmojiLoader extends AsyncExecutor<TextEmojiLoader.EmojiParam, T
/**
*
*/
public static class EmojiResult {
public static class Result {
@Nullable
public final Map<String, Bitmap> images;
public final Spannable spannable;
public final long id;
EmojiResult(long id, Spannable spannable, @Nullable Map<String, Bitmap> images) {
Result(long id, Spannable spannable, @Nullable Map<String, Bitmap> images) {
this.images = images;
this.spannable = spannable;
this.id = id;

View File

@ -15,7 +15,7 @@ import org.nuclearfog.twidda.model.Translation;
*
* @author nuclearfog
*/
public class TranslationLoader extends AsyncExecutor<Long, TranslationLoader.TranslationResult> {
public class TranslationLoader extends AsyncExecutor<Long, TranslationLoader.Result> {
private Connection connection;
@ -28,23 +28,23 @@ public class TranslationLoader extends AsyncExecutor<Long, TranslationLoader.Tra
@Override
protected TranslationResult doInBackground(@NonNull Long param) {
protected Result doInBackground(@NonNull Long param) {
try {
return new TranslationResult(connection.getStatusTranslation(param));
return new Result(connection.getStatusTranslation(param));
} catch (ConnectionException exception) {
return new TranslationResult(null);
return new Result(null);
}
}
/**
*
*/
public static class TranslationResult {
public static class Result {
@Nullable
public Translation translation;
TranslationResult(@Nullable Translation translation) {
Result(@Nullable Translation translation) {
this.translation = translation;
}
}

View File

@ -18,7 +18,7 @@ import org.nuclearfog.twidda.ui.activities.UsersActivity;
*
* @author nuclearfog
*/
public class UserFilterAction extends AsyncExecutor<UserFilterAction.FilterParam, UserFilterAction.FilterResult> {
public class UserFilterAction extends AsyncExecutor<UserFilterAction.Param, UserFilterAction.Result> {
private Connection connection;
private AppDatabase db;
@ -33,35 +33,35 @@ public class UserFilterAction extends AsyncExecutor<UserFilterAction.FilterParam
@Override
protected FilterResult doInBackground(@NonNull FilterParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case FilterParam.MUTE_USER:
case Param.MUTE_USER:
Relation relation = connection.muteUser(param.name);
db.muteUser(relation.getId(), true);
return new FilterResult(FilterResult.MUTE_USER, null);
return new Result(Result.MUTE_USER, null);
case FilterParam.BLOCK_USER:
case Param.BLOCK_USER:
relation = connection.blockUser(param.name);
db.muteUser(relation.getId(), true);
return new FilterResult(FilterResult.BLOCK_USER, null);
return new Result(Result.BLOCK_USER, null);
case FilterParam.BLOCK_DOMAIN:
case Param.BLOCK_DOMAIN:
connection.blockDomain(param.name);
return new FilterResult(FilterResult.BLOCK_DOMAIN, null);
return new Result(Result.BLOCK_DOMAIN, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new FilterResult(FilterResult.ERROR, exception);
return new Result(Result.ERROR, exception);
}
}
/**
*
*/
public static class FilterParam {
public static class Param {
public static final int MUTE_USER = 2;
public static final int BLOCK_USER = 3;
@ -70,12 +70,7 @@ public class UserFilterAction extends AsyncExecutor<UserFilterAction.FilterParam
final String name;
final int mode;
public FilterParam(int mode) {
this.mode = mode;
name = "";
}
public FilterParam(int mode, String name) {
public Param(int mode, String name) {
this.mode = mode;
this.name = name;
}
@ -84,7 +79,7 @@ public class UserFilterAction extends AsyncExecutor<UserFilterAction.FilterParam
/**
*
*/
public static class FilterResult {
public static class Result {
public static final int ERROR = -1;
public static final int MUTE_USER = 6;
@ -95,7 +90,7 @@ public class UserFilterAction extends AsyncExecutor<UserFilterAction.FilterParam
@Nullable
public final ConnectionException exception;
FilterResult(int mode, @Nullable ConnectionException exception) {
Result(int mode, @Nullable ConnectionException exception) {
this.mode = mode;
this.exception = exception;
}

View File

@ -16,7 +16,7 @@ import org.nuclearfog.twidda.model.User;
*
* @author nuclearfog
*/
public class UserLoader extends AsyncExecutor<UserLoader.UserParam, UserLoader.UserResult> {
public class UserLoader extends AsyncExecutor<UserLoader.Param, UserLoader.Result> {
private Connection connection;
private AppDatabase db;
@ -31,33 +31,33 @@ public class UserLoader extends AsyncExecutor<UserLoader.UserParam, UserLoader.U
@Override
protected UserResult doInBackground(@NonNull UserParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case UserParam.DATABASE:
case Param.DATABASE:
User user = db.getUser(param.id);
if (user != null) {
return new UserResult(UserResult.DATABASE, user, null);
return new Result(Result.DATABASE, user, null);
}
// fall through
case UserParam.ONLINE:
case Param.ONLINE:
user = connection.showUser(param.id);
db.saveUser(user);
return new UserResult(UserResult.ONLINE, user, null);
return new Result(Result.ONLINE, user, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new UserResult(UserResult.ERROR, null, exception);
return new Result(Result.ERROR, null, exception);
}
}
/**
*
*/
public static class UserParam {
public static class Param {
public static final int DATABASE = 1;
public static final int ONLINE = 2;
@ -65,7 +65,7 @@ public class UserLoader extends AsyncExecutor<UserLoader.UserParam, UserLoader.U
final int mode;
final long id;
public UserParam(int mode, long id) {
public Param(int mode, long id) {
this.mode = mode;
this.id = id;
}
@ -74,11 +74,11 @@ public class UserLoader extends AsyncExecutor<UserLoader.UserParam, UserLoader.U
/**
*
*/
public static class UserResult {
public static class Result {
public static final int ERROR = -1;
public static final int DATABASE = 3;
public static final int ONLINE = 4;
public static final int DATABASE = 10;
public static final int ONLINE = 11;
@Nullable
public final User user;
@ -86,7 +86,7 @@ public class UserLoader extends AsyncExecutor<UserLoader.UserParam, UserLoader.U
public final ConnectionException exception;
public final int mode;
UserResult(int mode, @Nullable User user, @Nullable ConnectionException exception) {
Result(int mode, @Nullable User user, @Nullable ConnectionException exception) {
this.mode = mode;
this.user = user;
this.exception = exception;

View File

@ -19,7 +19,7 @@ import org.nuclearfog.twidda.ui.activities.ProfileEditor;
* @author nuclearfog
* @see ProfileEditor
*/
public class UserUpdater extends AsyncExecutor<UserUpdate, UserUpdater.UserUpdateResult> {
public class UserUpdater extends AsyncExecutor<UserUpdate, UserUpdater.Result> {
private Connection connection;
private AppDatabase db;
@ -34,13 +34,13 @@ public class UserUpdater extends AsyncExecutor<UserUpdate, UserUpdater.UserUpdat
@Override
protected UserUpdateResult doInBackground(@NonNull UserUpdate param) {
protected Result doInBackground(@NonNull UserUpdate param) {
try {
User user = connection.updateUser(param);
db.saveUser(user);
return new UserUpdateResult(user, null);
return new Result(user, null);
} catch (ConnectionException exception) {
return new UserUpdateResult(null, exception);
return new Result(null, exception);
} finally {
param.close();
}
@ -49,14 +49,14 @@ public class UserUpdater extends AsyncExecutor<UserUpdate, UserUpdater.UserUpdat
/**
*
*/
public static class UserUpdateResult {
public static class Result {
@Nullable
public final User user;
@Nullable
public final ConnectionException exception;
UserUpdateResult(@Nullable User user, @Nullable ConnectionException exception) {
Result(@Nullable User user, @Nullable ConnectionException exception) {
this.user = user;
this.exception = exception;
}

View File

@ -15,7 +15,7 @@ import org.nuclearfog.twidda.model.UserList;
*
* @author nuclearfog
*/
public class UserlistAction extends AsyncExecutor<UserlistAction.ListActionParam, UserlistAction.ListActionResult> {
public class UserlistAction extends AsyncExecutor<UserlistAction.Param, UserlistAction.Result> {
private Connection connection;
@ -28,37 +28,37 @@ public class UserlistAction extends AsyncExecutor<UserlistAction.ListActionParam
@Override
protected ListActionResult doInBackground(@NonNull ListActionParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case ListActionParam.LOAD:
case Param.LOAD:
UserList result = connection.getUserlist(param.id);
return new ListActionResult(ListActionResult.LOAD, param.id, result, null);
return new Result(Result.LOAD, param.id, result, null);
case ListActionParam.FOLLOW:
case Param.FOLLOW:
result = connection.followUserlist(param.id);
return new ListActionResult(ListActionResult.FOLLOW, param.id, result, null);
return new Result(Result.FOLLOW, param.id, result, null);
case ListActionParam.UNFOLLOW:
case Param.UNFOLLOW:
result = connection.unfollowUserlist(param.id);
return new ListActionResult(ListActionResult.UNFOLLOW, param.id, result, null);
return new Result(Result.UNFOLLOW, param.id, result, null);
case ListActionParam.DELETE:
case Param.DELETE:
connection.deleteUserlist(param.id);
return new ListActionResult(ListActionResult.DELETE, param.id, null, null);
return new Result(Result.DELETE, param.id, null, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new ListActionResult(ListActionResult.ERROR, param.id, null, exception);
return new Result(Result.ERROR, param.id, null, exception);
}
}
/**
*
*/
public static class ListActionParam {
public static class Param {
public static final int LOAD = 1;
public static final int FOLLOW = 2;
@ -68,7 +68,7 @@ public class UserlistAction extends AsyncExecutor<UserlistAction.ListActionParam
final int mode;
final long id;
public ListActionParam(int mode, long id) {
public Param(int mode, long id) {
this.mode = mode;
this.id = id;
}
@ -77,7 +77,7 @@ public class UserlistAction extends AsyncExecutor<UserlistAction.ListActionParam
/**
*
*/
public static class ListActionResult {
public static class Result {
public static final int LOAD = 5;
public static final int FOLLOW = 6;
@ -92,7 +92,7 @@ public class UserlistAction extends AsyncExecutor<UserlistAction.ListActionParam
@Nullable
public final ConnectionException exception;
ListActionResult(int mode, long id, @Nullable UserList userlist, @Nullable ConnectionException exception) {
Result(int mode, long id, @Nullable UserList userlist, @Nullable ConnectionException exception) {
this.userlist = userlist;
this.exception = exception;
this.mode = mode;

View File

@ -17,7 +17,7 @@ import org.nuclearfog.twidda.ui.fragments.UserListFragment;
* @author nuclearfog
* @see UserListFragment
*/
public class UserlistLoader extends AsyncExecutor<UserlistLoader.UserlistParam, UserlistLoader.UserlistResult> {
public class UserlistLoader extends AsyncExecutor<UserlistLoader.Param, UserlistLoader.Result> {
private Connection connection;
@ -30,29 +30,29 @@ public class UserlistLoader extends AsyncExecutor<UserlistLoader.UserlistParam,
@Override
protected UserlistResult doInBackground(@NonNull UserlistParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case UserlistParam.OWNERSHIP:
case Param.OWNERSHIP:
UserLists userlists = connection.getUserlistOwnerships(param.id, param.cursor);
return new UserlistResult(UserlistResult.OWNERSHIP, param.index, userlists, null);
return new Result(Result.OWNERSHIP, param.index, userlists, null);
case UserlistParam.MEMBERSHIP:
case Param.MEMBERSHIP:
userlists = connection.getUserlistMemberships(param.id, param.cursor);
return new UserlistResult(UserlistResult.MEMBERSHIP, param.index, userlists, null);
return new Result(Result.MEMBERSHIP, param.index, userlists, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new UserlistResult(UserlistResult.ERROR, param.index, null, exception);
return new Result(Result.ERROR, param.index, null, exception);
}
}
/**
*
*/
public static class UserlistParam {
public static class Param {
public static final long NO_CURSOR = -1L;
@ -62,7 +62,7 @@ public class UserlistLoader extends AsyncExecutor<UserlistLoader.UserlistParam,
final int mode, index;
final long id, cursor;
public UserlistParam(int mode, int index, long id, long cursor) {
public Param(int mode, int index, long id, long cursor) {
this.mode = mode;
this.id = id;
this.index = index;
@ -73,7 +73,7 @@ public class UserlistLoader extends AsyncExecutor<UserlistLoader.UserlistParam,
/**
*
*/
public static class UserlistResult {
public static class Result {
public static final int ERROR = -1;
public static final int OWNERSHIP = 3;
@ -85,7 +85,7 @@ public class UserlistLoader extends AsyncExecutor<UserlistLoader.UserlistParam,
@Nullable
public final ConnectionException exception;
UserlistResult(int mode, int index, @Nullable UserLists userlists, @Nullable ConnectionException exception) {
Result(int mode, int index, @Nullable UserLists userlists, @Nullable ConnectionException exception) {
this.userlists = userlists;
this.exception = exception;
this.mode = mode;

View File

@ -15,7 +15,7 @@ import org.nuclearfog.twidda.backend.api.ConnectionManager;
*
* @author nuclearfog
*/
public class UserlistManager extends AsyncExecutor<UserlistManager.ListManagerParam, UserlistManager.ListManagerResult> {
public class UserlistManager extends AsyncExecutor<UserlistManager.Param, UserlistManager.Result> {
private Connection connection;
@ -28,29 +28,29 @@ public class UserlistManager extends AsyncExecutor<UserlistManager.ListManagerPa
@Override
protected ListManagerResult doInBackground(@NonNull ListManagerParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.mode) {
case ListManagerParam.ADD:
case Param.ADD:
connection.addUserToList(param.id, param.username);
return new ListManagerResult(ListManagerResult.ADD_USER, param.username, null);
return new Result(Result.ADD_USER, param.username, null);
case ListManagerParam.REMOVE:
case Param.REMOVE:
connection.removeUserFromList(param.id, param.username);
return new ListManagerResult(ListManagerResult.DEL_USER, param.username, null);
return new Result(Result.DEL_USER, param.username, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new ListManagerResult(ListManagerResult.ERROR, param.username, exception);
return new Result(Result.ERROR, param.username, exception);
}
}
/**
*
*/
public static class ListManagerParam {
public static class Param {
public static final int ADD = 1;
public static final int REMOVE = 2;
@ -59,7 +59,7 @@ public class UserlistManager extends AsyncExecutor<UserlistManager.ListManagerPa
final long id;
final String username;
public ListManagerParam(int mode, long id, String username) {
public Param(int mode, long id, String username) {
this.id = id;
this.mode = mode;
this.username = username;
@ -69,7 +69,7 @@ public class UserlistManager extends AsyncExecutor<UserlistManager.ListManagerPa
/**
*
*/
public static class ListManagerResult {
public static class Result {
public static final int ERROR = -1;
public static final int ADD_USER = 3;
@ -80,7 +80,7 @@ public class UserlistManager extends AsyncExecutor<UserlistManager.ListManagerPa
@Nullable
public final ConnectionException exception;
ListManagerResult(int mode, String name, @Nullable ConnectionException exception) {
Result(int mode, String name, @Nullable ConnectionException exception) {
this.mode = mode;
this.name = name;
this.exception = exception;

View File

@ -18,7 +18,7 @@ import org.nuclearfog.twidda.ui.activities.UserlistEditor;
*
* @author nuclearfog
*/
public class UserlistUpdater extends AsyncExecutor<UserListUpdate, UserlistUpdater.ListUpdateResult> {
public class UserlistUpdater extends AsyncExecutor<UserListUpdate, UserlistUpdater.Result> {
private Connection connection;
@ -31,24 +31,24 @@ public class UserlistUpdater extends AsyncExecutor<UserListUpdate, UserlistUpdat
@Override
protected ListUpdateResult doInBackground(@NonNull UserListUpdate update) {
protected Result doInBackground(@NonNull UserListUpdate update) {
try {
if (update.getId() != 0L) {
UserList result = connection.updateUserlist(update);
return new ListUpdateResult(result, true, null);
return new Result(result, true, null);
} else {
UserList result = connection.createUserlist(update);
return new ListUpdateResult(result, false, null);
return new Result(result, false, null);
}
} catch (ConnectionException exception) {
return new ListUpdateResult(null, false, exception);
return new Result(null, false, exception);
}
}
/**
*
*/
public static class ListUpdateResult {
public static class Result {
public final boolean updated;
@Nullable
@ -56,7 +56,7 @@ public class UserlistUpdater extends AsyncExecutor<UserListUpdate, UserlistUpdat
@Nullable
public final ConnectionException exception;
ListUpdateResult(@Nullable UserList userlist, boolean updated, @Nullable ConnectionException exception) {
Result(@Nullable UserList userlist, boolean updated, @Nullable ConnectionException exception) {
this.userlist = userlist;
this.updated = updated;
this.exception = exception;

View File

@ -17,7 +17,7 @@ import org.nuclearfog.twidda.ui.fragments.UserFragment;
* @author nuclearfog
* @see UserFragment
*/
public class UsersLoader extends AsyncExecutor<UsersLoader.UserParam, UsersLoader.UserResult> {
public class UsersLoader extends AsyncExecutor<UsersLoader.Param, UsersLoader.Result> {
private Connection connection;
@ -30,65 +30,65 @@ public class UsersLoader extends AsyncExecutor<UsersLoader.UserParam, UsersLoade
@Override
protected UserResult doInBackground(@NonNull UserParam param) {
protected Result doInBackground(@NonNull Param param) {
try {
switch (param.type) {
case UserParam.FOLLOWS:
case Param.FOLLOWS:
Users users = connection.getFollower(param.id, param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
case UserParam.FRIENDS:
case Param.FRIENDS:
users = connection.getFollowing(param.id, param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
case UserParam.REPOST:
case Param.REPOST:
users = connection.getRepostingUsers(param.id, param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
case UserParam.FAVORIT:
case Param.FAVORIT:
users = connection.getFavoritingUsers(param.id, param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
case UserParam.SEARCH:
case Param.SEARCH:
users = connection.searchUsers(param.search, param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
case UserParam.SUBSCRIBER:
case Param.SUBSCRIBER:
users = connection.getListSubscriber(param.id, param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
case UserParam.LISTMEMBER:
case Param.LISTMEMBER:
users = connection.getListMember(param.id, param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
case UserParam.BLOCK:
case Param.BLOCK:
users = connection.getBlockedUsers(param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
case UserParam.MUTE:
case Param.MUTE:
users = connection.getMutedUsers(param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
case UserParam.REQUEST_IN:
case Param.REQUEST_IN:
users = connection.getIncomingFollowRequests(param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
case UserParam.REQUEST_OUT:
case Param.REQUEST_OUT:
users = connection.getOutgoingFollowRequests(param.cursor);
return new UserResult(users, param.index, null);
return new Result(users, param.index, null);
default:
return null;
}
} catch (ConnectionException exception) {
return new UserResult(null, param.index, exception);
return new Result(null, param.index, exception);
}
}
/**
*
*/
public static class UserParam {
public static class Param {
public static final long NO_CURSOR = -1L;
@ -108,7 +108,7 @@ public class UsersLoader extends AsyncExecutor<UsersLoader.UserParam, UsersLoade
final String search;
final long id, cursor;
public UserParam(int type, int index, long id, long cursor, String search) {
public Param(int type, int index, long id, long cursor, String search) {
this.type = type;
this.index = index;
this.id = id;
@ -120,7 +120,7 @@ public class UsersLoader extends AsyncExecutor<UsersLoader.UserParam, UsersLoade
/**
*
*/
public static class UserResult {
public static class Result {
@Nullable
public final Users users;
@ -128,7 +128,7 @@ public class UsersLoader extends AsyncExecutor<UsersLoader.UserParam, UsersLoade
public final ConnectionException exception;
public final int index;
UserResult(@Nullable Users users, int index, @Nullable ConnectionException exception) {
Result(@Nullable Users users, int index, @Nullable ConnectionException exception) {
this.users = users;
this.index = index;
this.exception = exception;

View File

@ -24,7 +24,6 @@ public enum Configuration {
private final boolean searchFilterEnabled;
private final boolean profileLocationEnabled;
private final boolean profileUrlEnabled;
private final boolean idBlocklistEnabled;
private final boolean postLocationSupported;
private final boolean notificationDismissSupported;
private final boolean statusSpoilerSupported;
@ -53,7 +52,6 @@ public enum Configuration {
searchFilterEnabled = false;
profileLocationEnabled = false;
profileUrlEnabled = false;
idBlocklistEnabled = false;
postLocationSupported = false;
notificationDismissSupported = true;
statusSpoilerSupported = true;
@ -120,13 +118,6 @@ public enum Configuration {
return profileUrlEnabled;
}
/**
* @return true to enable user ID filtering
*/
public boolean filterlistEnabled() {
return idBlocklistEnabled;
}
/**
* @return true if posting location is supported
*/

View File

@ -6,8 +6,6 @@ import androidx.annotation.NonNull;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.NotificationLoader;
import org.nuclearfog.twidda.backend.async.NotificationLoader.NotificationLoaderParam;
import org.nuclearfog.twidda.backend.async.NotificationLoader.NotificationLoaderResult;
import org.nuclearfog.twidda.backend.async.PushUpdater;
import org.nuclearfog.twidda.backend.helper.update.PushUpdate;
import org.nuclearfog.twidda.config.GlobalSettings;
@ -18,7 +16,7 @@ import org.unifiedpush.android.connector.MessagingReceiver;
*
* @author nuclearfog
*/
public class PushNotificationReceiver extends MessagingReceiver implements AsyncCallback<NotificationLoaderResult> {
public class PushNotificationReceiver extends MessagingReceiver implements AsyncCallback<NotificationLoader.Result> {
private PushNotification notificationManager;
@ -28,7 +26,7 @@ public class PushNotificationReceiver extends MessagingReceiver implements Async
GlobalSettings settings = GlobalSettings.get(context);
if (settings.isLoggedIn() && settings.getLogin().getConfiguration().isWebpushSupported() && settings.pushEnabled()) {
NotificationLoader loader = new NotificationLoader(context);
NotificationLoaderParam param = new NotificationLoaderParam(NotificationLoaderParam.LOAD_UNREAD, 0, 0L, 0L);
NotificationLoader.Param param = new NotificationLoader.Param(NotificationLoader.Param.LOAD_UNREAD, 0, 0L, 0L);
notificationManager = new PushNotification(context);
loader.execute(param, this);
}
@ -46,7 +44,7 @@ public class PushNotificationReceiver extends MessagingReceiver implements Async
@Override
public void onResult(@NonNull NotificationLoaderResult result) {
public void onResult(@NonNull NotificationLoader.Result result) {
if (result.notifications != null && !result.notifications.isEmpty()) {
if (notificationManager != null) {
notificationManager.createNotification(result.notifications);

View File

@ -17,9 +17,8 @@ import androidx.viewpager2.widget.ViewPager2;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.HashtagAction;
import org.nuclearfog.twidda.backend.async.HashtagAction.HashtagActionParam;
import org.nuclearfog.twidda.backend.async.HashtagAction.HashtagActionResult;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.ui.adapter.viewpager.HashtagAdapter;
import org.nuclearfog.twidda.ui.views.TabSelector;
@ -30,7 +29,7 @@ import org.nuclearfog.twidda.ui.views.TabSelector.OnTabSelectedListener;
*
* @author nuclearfog
*/
public class HashtagActivity extends AppCompatActivity implements SearchView.OnQueryTextListener, OnTabSelectedListener, AsyncCallback<HashtagActionResult> {
public class HashtagActivity extends AppCompatActivity implements SearchView.OnQueryTextListener, OnTabSelectedListener, AsyncCallback<HashtagAction.Result> {
private GlobalSettings settings;
private HashtagAction hashtagAction;
@ -90,11 +89,11 @@ public class HashtagActivity extends AppCompatActivity implements SearchView.OnQ
public boolean onQueryTextSubmit(String query) {
if (hashtagAction.isIdle()) {
if (viewPager.getCurrentItem() == 0) {
HashtagActionParam param = new HashtagActionParam(HashtagActionParam.FOLLOW, query);
HashtagAction.Param param = new HashtagAction.Param(HashtagAction.Param.FOLLOW, query);
hashtagAction.execute(param, this);
return true;
} else if (viewPager.getCurrentItem() == 1) {
HashtagActionParam param = new HashtagActionParam(HashtagActionParam.FEATURE, query);
HashtagAction.Param param = new HashtagAction.Param(HashtagAction.Param.FEATURE, query);
hashtagAction.execute(param, this);
return true;
}
@ -110,21 +109,22 @@ public class HashtagActivity extends AppCompatActivity implements SearchView.OnQ
@Override
public void onResult(@NonNull HashtagActionResult result) {
public void onResult(@NonNull HashtagAction.Result result) {
switch (result.mode) {
case HashtagActionResult.FEATURE:
case HashtagAction.Result.FEATURE:
Toast.makeText(getApplicationContext(), R.string.info_hashtag_featured, Toast.LENGTH_SHORT).show();
adapter.notifySettingsChanged();
invalidateOptionsMenu();
break;
case HashtagActionResult.FOLLOW:
case HashtagAction.Result.FOLLOW:
Toast.makeText(getApplicationContext(), R.string.info_hashtag_followed, Toast.LENGTH_SHORT).show();
adapter.notifySettingsChanged();
invalidateOptionsMenu();
break;
case HashtagActionResult.ERROR:
case HashtagAction.Result.ERROR:
ErrorUtils.showErrorMessage(getApplicationContext(), result.exception);
break;
}
}

View File

@ -19,8 +19,6 @@ import org.nuclearfog.twidda.BuildConfig;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.ImageDownloader;
import org.nuclearfog.twidda.backend.async.ImageDownloader.ImageLoaderParam;
import org.nuclearfog.twidda.backend.async.ImageDownloader.ImageLoaderResult;
import org.nuclearfog.twidda.backend.helper.MediaStatus;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.BlurHashDecoder;
@ -42,7 +40,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoaderResult>, DescriptionCallback {
public class ImageViewer extends MediaActivity implements AsyncCallback<ImageDownloader.Result>, DescriptionCallback {
/**
* activity result code indicates that {@link MediaStatus} data has been updated
@ -161,7 +159,7 @@ public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoa
}
} else {
loadingCircle.setVisibility(View.VISIBLE);
ImageLoaderParam request = new ImageLoaderParam(Uri.parse(imageUrl), cacheFolder);
ImageDownloader.Param request = new ImageDownloader.Param(Uri.parse(imageUrl), cacheFolder);
imageAsync.execute(request, this);
}
}
@ -250,7 +248,7 @@ public class ImageViewer extends MediaActivity implements AsyncCallback<ImageLoa
@Override
public void onResult(@NonNull ImageLoaderResult result) {
public void onResult(@NonNull ImageDownloader.Result result) {
if (result.uri != null) {
loadingCircle.setVisibility(View.INVISIBLE);
cacheUri = result.uri;

View File

@ -28,8 +28,6 @@ import androidx.appcompat.widget.Toolbar;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.LoginAction;
import org.nuclearfog.twidda.backend.async.LoginAction.LoginParam;
import org.nuclearfog.twidda.backend.async.LoginAction.LoginResult;
import org.nuclearfog.twidda.backend.helper.ConnectionResult;
import org.nuclearfog.twidda.backend.helper.update.ConnectionUpdate;
import org.nuclearfog.twidda.backend.utils.AppStyles;
@ -48,7 +46,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class LoginActivity extends AppCompatActivity implements ActivityResultCallback<ActivityResult>, AsyncCallback<LoginResult>, OnClickListener, OnItemSelectedListener {
public class LoginActivity extends AppCompatActivity implements ActivityResultCallback<ActivityResult>, AsyncCallback<LoginAction.Result>, OnClickListener, OnItemSelectedListener {
/**
* return code to notify if a login process was successful
@ -234,7 +232,7 @@ public class LoginActivity extends AppCompatActivity implements ActivityResultCa
// generate Mastodon login
if (hostSelector.getSelectedItemPosition() == IDX_MASTODON) {
Toast.makeText(getApplicationContext(), R.string.info_open_mastodon_login, Toast.LENGTH_LONG).show();
LoginParam param = new LoginParam(LoginParam.MODE_REQUEST, connection.getApiType(), connection, "");
LoginAction.Param param = new LoginAction.Param(LoginAction.Param.MODE_REQUEST, connection.getApiType(), connection, "");
loginAsync.execute(param, this);
}
}
@ -250,7 +248,7 @@ public class LoginActivity extends AppCompatActivity implements ActivityResultCa
// login to mastodon
else if (hostSelector.getSelectedItemPosition() == IDX_MASTODON) {
Toast.makeText(getApplicationContext(), R.string.info_login_to_mastodon, Toast.LENGTH_LONG).show();
LoginParam param = new LoginParam(LoginParam.MODE_LOGIN, connection.getApiType(), connection, code);
LoginAction.Param param = new LoginAction.Param(LoginAction.Param.MODE_LOGIN, connection.getApiType(), connection, code);
loginAsync.execute(param, this);
}
}
@ -282,16 +280,16 @@ public class LoginActivity extends AppCompatActivity implements ActivityResultCa
@Override
public void onResult(@NonNull LoginResult result) {
public void onResult(@NonNull LoginAction.Result result) {
switch (result.mode) {
case LoginResult.MODE_LOGIN:
case LoginAction.Result.MODE_LOGIN:
Intent intent = new Intent();
intent.putExtra(RETURN_ACCOUNT, result.account);
setResult(RETURN_LOGIN_SUCCESSFUL, intent);
finish();
break;
case LoginResult.MODE_REQUEST:
case LoginAction.Result.MODE_REQUEST:
connectionResult = result.connection;
if (connectionResult != null) {
connection.setConnection(connectionResult);
@ -299,7 +297,7 @@ public class LoginActivity extends AppCompatActivity implements ActivityResultCa
}
break;
case LoginResult.MODE_ERROR:
case LoginAction.Result.MODE_ERROR:
ErrorUtils.showErrorMessage(getApplicationContext(), result.exception);
break;
}

View File

@ -39,8 +39,8 @@ import com.squareup.picasso.Transformation;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.UserLoader;
import org.nuclearfog.twidda.backend.async.UserLoader.UserParam;
import org.nuclearfog.twidda.backend.async.UserLoader.UserResult;
import org.nuclearfog.twidda.backend.async.UserLoader.Param;
import org.nuclearfog.twidda.backend.async.UserLoader.Result;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
@ -63,7 +63,7 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
* @author nuclearfog
*/
public class MainActivity extends AppCompatActivity implements ActivityResultCallback<ActivityResult>, OnTabSelectedListener,
OnQueryTextListener, OnNavigationItemSelectedListener, OnClickListener, AsyncCallback<UserResult> {
OnQueryTextListener, OnNavigationItemSelectedListener, OnClickListener, AsyncCallback<Result> {
/**
* Bundle key used to select page
@ -152,7 +152,7 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal
}
// load user information
if (settings.isLoggedIn() && currentUser == null) {
UserParam param = new UserParam(UserParam.DATABASE, settings.getLogin().getId());
Param param = new Param(Param.DATABASE, settings.getLogin().getId());
userLoader.execute(param, this);
}
// set navigation view style
@ -457,7 +457,7 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal
@Override
public void onResult(@NonNull UserResult userResult) {
public void onResult(@NonNull Result userResult) {
if (userResult.user != null) {
setCurrentUser(userResult.user);
}

View File

@ -39,7 +39,6 @@ import androidx.appcompat.app.AppCompatActivity;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.ImageSaver;
import org.nuclearfog.twidda.backend.async.ImageSaver.ImageParam;
import java.io.File;
import java.io.FileOutputStream;
@ -234,7 +233,7 @@ public abstract class MediaActivity extends AppCompatActivity implements Activit
// store images directly
InputStream src = getContentResolver().openInputStream(srcMediaUri);
OutputStream dest = new FileOutputStream(destMediaFile);
ImageParam param = new ImageParam(src, dest);
ImageSaver.Param param = new ImageSaver.Param(src, dest);
imageTask.execute(param, imageCallback);
} else {
// use scoped storage
@ -250,7 +249,7 @@ public abstract class MediaActivity extends AppCompatActivity implements Activit
if (imageUri != null) {
InputStream src = getContentResolver().openInputStream(srcMediaUri);
OutputStream dest = getContentResolver().openOutputStream(imageUri);
ImageParam param = new ImageParam(src, dest);
ImageSaver.Param param = new ImageSaver.Param(src, dest);
imageTask.execute(param, imageCallback);
}
}

View File

@ -38,17 +38,9 @@ import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.api.ConnectionException;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.DomainAction;
import org.nuclearfog.twidda.backend.async.DomainAction.DomainParam;
import org.nuclearfog.twidda.backend.async.DomainAction.DomainResult;
import org.nuclearfog.twidda.backend.async.RelationLoader;
import org.nuclearfog.twidda.backend.async.RelationLoader.RelationParam;
import org.nuclearfog.twidda.backend.async.RelationLoader.RelationResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.UserLoader;
import org.nuclearfog.twidda.backend.async.UserLoader.UserParam;
import org.nuclearfog.twidda.backend.async.UserLoader.UserResult;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
@ -116,11 +108,11 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
*/
private static final int IMAGE_PLACEHOLDER_COLOR = 0x2F000000;
private AsyncCallback<DomainResult> domainCallback = this::setDomainResult;
private AsyncCallback<RelationResult> relationCallback = this::setRelationResult;
private AsyncCallback<UserResult> userCallback = this::setUserResult;
private AsyncCallback<EmojiResult> usernameUpdate = this::onUsernameUpdate;
private AsyncCallback<EmojiResult> userDescriptionUpdate = this::onUserDescriptionUpdate;
private AsyncCallback<DomainAction.Result> domainCallback = this::setDomainResult;
private AsyncCallback<RelationLoader.Result> relationCallback = this::setRelationResult;
private AsyncCallback<UserLoader.Result> userCallback = this::setUserResult;
private AsyncCallback<TextEmojiLoader.Result> usernameUpdate = this::onUsernameUpdate;
private AsyncCallback<TextEmojiLoader.Result> userDescriptionUpdate = this::onUserDescriptionUpdate;
private ProfileAdapter adapter;
private GlobalSettings settings;
@ -238,14 +230,14 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
// set user/relation data and initialize loaders
if (user != null) {
setUser(user);
UserParam param = new UserParam(UserParam.ONLINE, userId);
UserLoader.Param param = new UserLoader.Param(UserLoader.Param.ONLINE, userId);
userLoader.execute(param, userCallback);
} else {
UserParam param = new UserParam(UserParam.DATABASE, userId);
UserLoader.Param param = new UserLoader.Param(UserLoader.Param.DATABASE, userId);
userLoader.execute(param, userCallback);
}
if (relation == null && userId != settings.getLogin().getId()) {
RelationParam param = new RelationParam(userId, RelationParam.LOAD);
RelationLoader.Param param = new RelationLoader.Param(userId, RelationLoader.Param.LOAD);
relationLoader.execute(param, relationCallback);
}
if (userId != settings.getLogin().getId()) {
@ -363,7 +355,7 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
if (relation != null && user != null) {
if (!relation.isFollowing()) {
if (relationLoader.isIdle()) {
RelationParam param = new RelationParam(user.getId(), RelationParam.FOLLOW);
RelationLoader.Param param = new RelationLoader.Param(user.getId(), RelationLoader.Param.FOLLOW);
relationLoader.execute(param, relationCallback);
}
} else {
@ -377,7 +369,7 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
if (relation != null && user != null) {
if (relation.isMuted()) {
if (relationLoader.isIdle()) {
RelationParam param = new RelationParam(user.getId(), RelationParam.UNMUTE);
RelationLoader.Param param = new RelationLoader.Param(user.getId(), RelationLoader.Param.UNMUTE);
relationLoader.execute(param, relationCallback);
}
} else {
@ -391,7 +383,7 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
if (relation != null && user != null) {
if (relation.isBlocked()) {
if (relationLoader.isIdle()) {
RelationParam param = new RelationParam(user.getId(), RelationParam.UNBLOCK);
RelationLoader.Param param = new RelationLoader.Param(user.getId(), RelationLoader.Param.UNBLOCK);
relationLoader.execute(param, relationCallback);
}
} else {
@ -504,23 +496,23 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
if (user != null) {
// confirmed unfollowing user
if (type == ConfirmDialog.PROFILE_UNFOLLOW) {
RelationParam param = new RelationParam(user.getId(), RelationParam.UNFOLLOW);
RelationLoader.Param param = new RelationLoader.Param(user.getId(), RelationLoader.Param.UNFOLLOW);
relationLoader.execute(param, relationCallback);
}
// confirmed blocking user
else if (type == ConfirmDialog.PROFILE_BLOCK) {
RelationParam param = new RelationParam(user.getId(), RelationParam.BLOCK);
RelationLoader.Param param = new RelationLoader.Param(user.getId(), RelationLoader.Param.BLOCK);
relationLoader.execute(param, relationCallback);
}
// confirmed muting user
else if (type == ConfirmDialog.PROFILE_MUTE) {
RelationParam param = new RelationParam(user.getId(), RelationParam.MUTE);
RelationLoader.Param param = new RelationLoader.Param(user.getId(), RelationLoader.Param.MUTE);
relationLoader.execute(param, relationCallback);
}
// confirmed domain block
else if (type == ConfirmDialog.DOMAIN_BLOCK_ADD) {
String url = Uri.parse(user.getProfileUrl()).getHost();
DomainParam param = new DomainParam(DomainParam.MODE_BLOCK, 0, DomainParam.NO_CURSOR, url);
DomainAction.Param param = new DomainAction.Param(DomainAction.Param.MODE_BLOCK, 0, DomainAction.Param.NO_CURSOR, url);
domainAction.execute(param, domainCallback);
}
}
@ -553,22 +545,22 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
*
* @param result user result from async executor
*/
private void setUserResult(@NonNull UserResult result) {
private void setUserResult(@NonNull UserLoader.Result result) {
switch (result.mode) {
case UserResult.DATABASE:
case UserLoader.Result.DATABASE:
if (result.user != null) {
UserParam param = new UserParam(UserParam.ONLINE, result.user.getId());
UserLoader.Param param = new UserLoader.Param(UserLoader.Param.ONLINE, result.user.getId());
userLoader.execute(param, userCallback);
}
// fall through
case UserResult.ONLINE:
case UserLoader.Result.ONLINE:
if (result.user != null) {
setUser(result.user);
}
break;
case UserResult.ERROR:
case UserLoader.Result.ERROR:
ErrorUtils.showErrorMessage(getApplicationContext(), result.exception);
if (user == null || (result.exception != null
&& (result.exception.getErrorCode() == ConnectionException.RESOURCE_NOT_FOUND
@ -584,33 +576,33 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
*
* @param result relation result from async executor
*/
private void setRelationResult(@NonNull RelationResult result) {
private void setRelationResult(@NonNull RelationLoader.Result result) {
switch (result.mode) {
case RelationResult.BLOCK:
case RelationLoader.Result.BLOCK:
Toast.makeText(getApplicationContext(), R.string.info_blocked, Toast.LENGTH_SHORT).show();
break;
case RelationResult.UNBLOCK:
case RelationLoader.Result.UNBLOCK:
Toast.makeText(getApplicationContext(), R.string.info_user_unblocked, Toast.LENGTH_SHORT).show();
break;
case RelationResult.MUTE:
case RelationLoader.Result.MUTE:
Toast.makeText(getApplicationContext(), R.string.info_user_muted, Toast.LENGTH_SHORT).show();
break;
case RelationResult.UNMUTE:
case RelationLoader.Result.UNMUTE:
Toast.makeText(getApplicationContext(), R.string.info_user_unmuted, Toast.LENGTH_SHORT).show();
break;
case RelationResult.FOLLOW:
case RelationLoader.Result.FOLLOW:
Toast.makeText(getApplicationContext(), R.string.info_followed, Toast.LENGTH_SHORT).show();
break;
case RelationResult.UNFOLLOW:
case RelationLoader.Result.UNFOLLOW:
Toast.makeText(getApplicationContext(), R.string.info_unfollowed, Toast.LENGTH_SHORT).show();
break;
case RelationResult.ERROR:
case RelationLoader.Result.ERROR:
ErrorUtils.showErrorMessage(getApplicationContext(), result.exception);
break;
}
@ -623,10 +615,10 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
/**
* set domain block result
*/
private void setDomainResult(DomainResult result) {
if (result.mode == DomainResult.MODE_BLOCK) {
private void setDomainResult(DomainAction.Result result) {
if (result.mode == DomainAction.Result.MODE_BLOCK) {
Toast.makeText(getApplicationContext(), R.string.info_domain_blocked, Toast.LENGTH_SHORT).show();
} else if (result.mode == DomainResult.ERROR) {
} else if (result.mode == DomainAction.Result.ERROR) {
ErrorUtils.showErrorMessage(this, result.exception);
}
}
@ -735,12 +727,12 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
if (settings.imagesEnabled() && user.getEmojis().length > 0) {
if (!user.getUsername().isEmpty()) {
SpannableString usernameSpan = new SpannableString(user.getUsername());
EmojiParam param = new EmojiParam(user.getEmojis(), usernameSpan, getResources().getDimensionPixelSize(R.dimen.profile_icon_size));
TextEmojiLoader.Param param = new TextEmojiLoader.Param(user.getEmojis(), usernameSpan, getResources().getDimensionPixelSize(R.dimen.profile_icon_size));
emojiLoader.execute(param, usernameUpdate);
}
if (!user.getDescription().trim().isEmpty()) {
Spannable descriptionSpan = new SpannableString(user.getDescription());
EmojiParam param = new EmojiParam(user.getEmojis(), descriptionSpan, getResources().getDimensionPixelSize(R.dimen.profile_icon_size));
TextEmojiLoader.Param param = new TextEmojiLoader.Param(user.getEmojis(), descriptionSpan, getResources().getDimensionPixelSize(R.dimen.profile_icon_size));
emojiLoader.execute(param, userDescriptionUpdate);
}
}
@ -752,7 +744,7 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
/**
* update username with emojis
*/
private void onUsernameUpdate(@NonNull EmojiResult result) {
private void onUsernameUpdate(@NonNull TextEmojiLoader.Result result) {
if (result.images != null) {
Spannable spannable = EmojiUtils.addEmojis(getApplicationContext(), result.spannable, result.images);
username.setText(spannable);
@ -762,7 +754,7 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
/**
* update user description with emojis
*/
private void onUserDescriptionUpdate(@NonNull EmojiResult result) {
private void onUserDescriptionUpdate(@NonNull TextEmojiLoader.Result result) {
if (result.images != null) {
Spannable spannable = EmojiUtils.addEmojis(getApplicationContext(), result.spannable, result.images);
description.setText(spannable);

View File

@ -29,7 +29,6 @@ import com.squareup.picasso.Transformation;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.UserUpdater;
import org.nuclearfog.twidda.backend.async.UserUpdater.UserUpdateResult;
import org.nuclearfog.twidda.backend.helper.MediaStatus;
import org.nuclearfog.twidda.backend.helper.update.UserUpdate;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
@ -52,7 +51,7 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
*
* @author nuclearfog
*/
public class ProfileEditor extends MediaActivity implements OnClickListener, AsyncCallback<UserUpdateResult>, OnConfirmListener, Callback {
public class ProfileEditor extends MediaActivity implements OnClickListener, AsyncCallback<UserUpdater.Result>, OnConfirmListener, Callback {
/**
* key to preload user data
@ -242,7 +241,7 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, Asy
@Override
public void onResult(@NonNull UserUpdateResult result) {
public void onResult(@NonNull UserUpdater.Result result) {
if (result.user != null) {
Intent data = new Intent();
data.putExtra(KEY_USER, result.user);

View File

@ -22,8 +22,8 @@ import androidx.viewpager2.widget.ViewPager2;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.HashtagAction;
import org.nuclearfog.twidda.backend.async.HashtagAction.HashtagActionParam;
import org.nuclearfog.twidda.backend.async.HashtagAction.HashtagActionResult;
import org.nuclearfog.twidda.backend.async.HashtagAction.Param;
import org.nuclearfog.twidda.backend.async.HashtagAction.Result;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.config.GlobalSettings;
@ -39,7 +39,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class SearchActivity extends AppCompatActivity implements OnClickListener, OnTabSelectedListener, OnQueryTextListener, AsyncCallback<HashtagActionResult> {
public class SearchActivity extends AppCompatActivity implements OnClickListener, OnTabSelectedListener, OnQueryTextListener, AsyncCallback<Result> {
/**
* Key for the search query, required
@ -96,7 +96,7 @@ public class SearchActivity extends AppCompatActivity implements OnClickListener
} else if (query != null) {
search = query;
if (search.startsWith("#") && search.matches("\\S+")) {
HashtagActionParam param = new HashtagActionParam(HashtagActionParam.LOAD, search);
Param param = new Param(Param.LOAD, search);
hashtagAction.execute(param, this);
}
}
@ -207,11 +207,11 @@ public class SearchActivity extends AppCompatActivity implements OnClickListener
// follow/unfollow hashtag
else if (item.getItemId() == R.id.search_hashtag) {
if (hashtag != null && hashtagAction.isIdle()) {
HashtagActionParam param;
Param param;
if (hashtag.following())
param = new HashtagActionParam(HashtagActionParam.UNFOLLOW, hashtag.getName());
param = new Param(Param.UNFOLLOW, hashtag.getName());
else
param = new HashtagActionParam(HashtagActionParam.FOLLOW, hashtag.getName());
param = new Param(Param.FOLLOW, hashtag.getName());
hashtagAction.execute(param, this);
}
}
@ -258,21 +258,21 @@ public class SearchActivity extends AppCompatActivity implements OnClickListener
@Override
public void onResult(@NonNull HashtagActionResult result) {
public void onResult(@NonNull Result result) {
if (result.hashtag != null) {
this.hashtag = result.hashtag;
invalidateMenu();
}
switch (result.mode) {
case HashtagActionResult.FOLLOW:
case Result.FOLLOW:
Toast.makeText(getApplicationContext(), R.string.info_hashtag_followed, Toast.LENGTH_SHORT).show();
break;
case HashtagActionResult.UNFOLLOW:
case Result.UNFOLLOW:
Toast.makeText(getApplicationContext(), R.string.info_hashtag_unfollowed, Toast.LENGTH_SHORT).show();
break;
case HashtagActionResult.ERROR:
case Result.ERROR:
ErrorUtils.showErrorMessage(this, result.exception);
break;
}

View File

@ -41,8 +41,6 @@ import com.kyleduo.switchbutton.SwitchButton;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.DatabaseAction;
import org.nuclearfog.twidda.backend.async.DatabaseAction.DatabaseParam;
import org.nuclearfog.twidda.backend.async.DatabaseAction.DatabaseResult;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.config.Configuration;
import org.nuclearfog.twidda.config.GlobalSettings;
@ -113,7 +111,7 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
private int mode = 0;
private int color = 0;
private AsyncCallback<DatabaseResult> databaseResult = this::onDatabaseResult;
private AsyncCallback<DatabaseAction.Result> databaseResult = this::onDatabaseResult;
@Override
@ -317,11 +315,11 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
// remove account from database
if (type == ConfirmDialog.APP_LOG_OUT) {
settings.setLogin(null, true);
databaseAction.execute(new DatabaseParam(DatabaseParam.LOGOUT), databaseResult);
databaseAction.execute(new DatabaseAction.Param(DatabaseAction.Param.LOGOUT), databaseResult);
}
// confirm delete app data and cache
else if (type == ConfirmDialog.DELETE_APP_DATA) {
databaseAction.execute(new DatabaseParam(DatabaseParam.DELETE), databaseResult);
databaseAction.execute(new DatabaseAction.Param(DatabaseAction.Param.DELETE), databaseResult);
}
// confirm leaving without saving proxy changes
else if (type == ConfirmDialog.WRONG_PROXY) {
@ -602,18 +600,18 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
/**
* called from {@link DatabaseAction}
*/
private void onDatabaseResult(@NonNull DatabaseResult result) {
private void onDatabaseResult(@NonNull DatabaseAction.Result result) {
switch (result.mode) {
case DatabaseResult.DELETE:
case DatabaseAction.Result.DELETE:
Toast.makeText(getApplicationContext(), R.string.info_database_cleared, Toast.LENGTH_SHORT).show();
break;
case DatabaseResult.LOGOUT:
case DatabaseAction.Result.LOGOUT:
setResult(RETURN_APP_LOGOUT);
finish();
break;
case DatabaseResult.ERROR:
case DatabaseAction.Result.ERROR:
Toast.makeText(getApplicationContext(), R.string.error_database_cleared, Toast.LENGTH_SHORT).show();
break;

View File

@ -45,19 +45,10 @@ import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.api.ConnectionException;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.NotificationAction;
import org.nuclearfog.twidda.backend.async.NotificationAction.NotificationActionParam;
import org.nuclearfog.twidda.backend.async.NotificationAction.NotificationActionResult;
import org.nuclearfog.twidda.backend.async.PollAction;
import org.nuclearfog.twidda.backend.async.PollAction.PollActionParam;
import org.nuclearfog.twidda.backend.async.PollAction.PollActionResult;
import org.nuclearfog.twidda.backend.async.StatusAction;
import org.nuclearfog.twidda.backend.async.StatusAction.StatusParam;
import org.nuclearfog.twidda.backend.async.StatusAction.StatusResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TranslationLoader;
import org.nuclearfog.twidda.backend.async.TranslationLoader.TranslationResult;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
@ -150,12 +141,12 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
private static final int IMAGE_PLACEHOLDER_COLOR = 0x2F000000;
private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this);
private AsyncCallback<StatusResult> statusCallback = this::onStatusResult;
private AsyncCallback<PollActionResult> pollResult = this::onPollResult;
private AsyncCallback<TranslationResult> translationResult = this::onTranslationResult;
private AsyncCallback<NotificationActionResult> notificationCallback = this::onNotificationResult;
private AsyncCallback<EmojiResult> statusTextUpdate = this::onStatusTextUpdate;
private AsyncCallback<EmojiResult> usernameUpdate = this::onUsernameUpdate;
private AsyncCallback<StatusAction.Result> statusCallback = this::onStatusResult;
private AsyncCallback<PollAction.Result> pollResult = this::onPollResult;
private AsyncCallback<TranslationLoader.Result> translationResult = this::onTranslationResult;
private AsyncCallback<NotificationAction.Result> notificationCallback = this::onNotificationResult;
private AsyncCallback<TextEmojiLoader.Result> statusTextUpdate = this::onStatusTextUpdate;
private AsyncCallback<TextEmojiLoader.Result> usernameUpdate = this::onUsernameUpdate;
private StatusAction statusLoader;
private NotificationAction notificationLoader;
@ -271,8 +262,8 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
Status status = (Status) serialized;
Status embeddedStatus = status.getEmbeddedStatus();
setStatus(status);
StatusParam statusParam = new StatusParam(StatusParam.ONLINE, status.getId());
statusLoader.execute(statusParam, statusCallback);
StatusAction.Param param = new StatusAction.Param(StatusAction.Param.ONLINE, status.getId());
statusLoader.execute(param, statusCallback);
if (embeddedStatus != null) {
statusId = embeddedStatus.getId();
replyUsername = embeddedStatus.getAuthor().getScreenname();
@ -286,7 +277,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
// set notification data
else if (serialized instanceof Notification) {
Notification notification = (Notification) serialized;
NotificationActionParam notificationParam = new NotificationActionParam(NotificationActionParam.ONLINE, notification.getId());
NotificationAction.Param notificationParam = new NotificationAction.Param(NotificationAction.Param.ONLINE, notification.getId());
notificationLoader.execute(notificationParam, notificationCallback);
if (notification.getStatus() != null) {
setNotification(notification);
@ -297,13 +288,13 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
// get status data using status ID
else if (statusId != 0L) {
replyUsername = savedInstanceState.getString(KEY_NAME);
StatusParam statusParam = new StatusParam(StatusParam.DATABASE, statusId);
statusLoader.execute(statusParam, statusCallback);
StatusAction.Param param = new StatusAction.Param(StatusAction.Param.DATABASE, statusId);
statusLoader.execute(param, statusCallback);
}
// get notification data using notification ID
else if (notificationId != 0L) {
replyUsername = savedInstanceState.getString(KEY_NAME);
NotificationActionParam notificationParam = new NotificationActionParam(NotificationActionParam.ONLINE, notificationId);
NotificationAction.Param notificationParam = new NotificationAction.Param(NotificationAction.Param.ONLINE, notificationId);
notificationLoader.execute(notificationParam, notificationCallback);
}
// initialize status reply list
@ -440,15 +431,15 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
// add/remove bookmark
else if (item.getItemId() == R.id.menu_status_bookmark) {
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());
int mode = status.isBookmarked() ? StatusAction.Param.UNBOOKMARK : StatusAction.Param.BOOKMARK;
StatusAction.Param param = new StatusAction.Param(mode, status.getId());
statusLoader.execute(param, statusCallback);
return true;
}
// 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());
int mode = hidden ? StatusAction.Param.UNHIDE : StatusAction.Param.HIDE;
StatusAction.Param param = new StatusAction.Param(mode, status.getId());
statusLoader.execute(param, statusCallback);
return true;
}
@ -604,16 +595,16 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
// 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());
int mode = status.isReposted() ? StatusAction.Param.UNREPOST : StatusAction.Param.REPOST;
StatusAction.Param param = new StatusAction.Param(mode, status.getId());
statusLoader.execute(param, statusCallback);
return true;
}
// favorite this status
else if (v.getId() == R.id.page_status_favorite) {
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());
int mode = status.isFavorited() ? StatusAction.Param.UNFAVORITE : StatusAction.Param.FAVORITE;
StatusAction.Param param = new StatusAction.Param(mode, status.getId());
statusLoader.execute(param, statusCallback);
return true;
}
@ -655,7 +646,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (status.getEmbeddedStatus() != null) {
id = status.getEmbeddedStatus().getId();
}
StatusParam param = new StatusParam(StatusParam.DELETE, id);
StatusAction.Param param = new StatusAction.Param(StatusAction.Param.DELETE, id);
statusLoader.execute(param, statusCallback);
}
}
@ -728,7 +719,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
@Override
public void onVoteClick(Poll poll, int[] selection) {
if (pollLoader.isIdle()) {
PollActionParam param = new PollActionParam(PollActionParam.VOTE, poll, selection);
PollAction.Param param = new PollAction.Param(PollAction.Param.VOTE, poll, selection);
pollLoader.execute(param, pollResult);
}
}
@ -797,7 +788,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (status.getAuthor().getEmojis().length > 0) {
Spannable usernameSpan = new SpannableString(author.getUsername());
if (settings.imagesEnabled()) {
EmojiParam param = new EmojiParam(author.getEmojis(), usernameSpan, getResources().getDimensionPixelSize(R.dimen.page_status_icon_size));
TextEmojiLoader.Param param = new TextEmojiLoader.Param(author.getEmojis(), usernameSpan, getResources().getDimensionPixelSize(R.dimen.page_status_icon_size));
emojiLoader.execute(param, usernameUpdate);
usernameSpan = EmojiUtils.removeTags(usernameSpan);
}
@ -817,7 +808,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (!status.getText().isEmpty()) {
Spannable spannableText = Tagger.makeTextWithLinks(status.getText(), settings.getHighlightColor(), this);
if (status.getEmojis().length > 0 && settings.imagesEnabled()) {
EmojiParam param = new EmojiParam(status.getEmojis(), spannableText, getResources().getDimensionPixelSize(R.dimen.page_status_icon_size));
TextEmojiLoader.Param param = new TextEmojiLoader.Param(status.getEmojis(), spannableText, getResources().getDimensionPixelSize(R.dimen.page_status_icon_size));
emojiLoader.execute(param, statusTextUpdate);
spannableText = EmojiUtils.removeTags(spannableText);
}
@ -918,61 +909,61 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
/**
*
*/
private void onStatusResult(@NonNull StatusResult result) {
private void onStatusResult(@NonNull StatusAction.Result result) {
if (result.status != null) {
setStatus(result.status);
}
switch (result.mode) {
case StatusResult.DATABASE:
case StatusAction.Result.DATABASE:
if (result.status != null) {
StatusParam param = new StatusParam(StatusParam.ONLINE, result.status.getId());
StatusAction.Param param = new StatusAction.Param(StatusAction.Param.ONLINE, result.status.getId());
statusLoader.execute(param, statusCallback);
}
break;
case StatusResult.REPOST:
case StatusAction.Result.REPOST:
Toast.makeText(getApplicationContext(), R.string.info_status_reposted, Toast.LENGTH_SHORT).show();
break;
case StatusResult.UNREPOST:
case StatusAction.Result.UNREPOST:
Toast.makeText(getApplicationContext(), R.string.info_status_unreposted, Toast.LENGTH_SHORT).show();
break;
case StatusResult.FAVORITE:
case StatusAction.Result.FAVORITE:
if (settings.likeEnabled())
Toast.makeText(getApplicationContext(), R.string.info_status_liked, Toast.LENGTH_SHORT).show();
else
Toast.makeText(getApplicationContext(), R.string.info_status_favored, Toast.LENGTH_SHORT).show();
break;
case StatusResult.UNFAVORITE:
case StatusAction.Result.UNFAVORITE:
if (settings.likeEnabled())
Toast.makeText(getApplicationContext(), R.string.info_status_unliked, Toast.LENGTH_SHORT).show();
else
Toast.makeText(getApplicationContext(), R.string.info_status_unfavored, Toast.LENGTH_SHORT).show();
break;
case StatusResult.BOOKMARK:
case StatusAction.Result.BOOKMARK:
Toast.makeText(getApplicationContext(), R.string.info_status_bookmarked, Toast.LENGTH_SHORT).show();
break;
case StatusResult.UNBOOKMARK:
case StatusAction.Result.UNBOOKMARK:
Toast.makeText(getApplicationContext(), R.string.info_status_unbookmarked, Toast.LENGTH_SHORT).show();
break;
case StatusResult.HIDE:
case StatusAction.Result.HIDE:
hidden = true;
invalidateOptionsMenu();
Toast.makeText(getApplicationContext(), R.string.info_reply_hidden, Toast.LENGTH_SHORT).show();
break;
case StatusResult.UNHIDE:
case StatusAction.Result.UNHIDE:
hidden = false;
invalidateOptionsMenu();
Toast.makeText(getApplicationContext(), R.string.info_reply_unhidden, Toast.LENGTH_SHORT).show();
break;
case StatusResult.DELETE:
case StatusAction.Result.DELETE:
if (notification != null) {
Toast.makeText(getApplicationContext(), R.string.info_status_removed, Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
@ -988,7 +979,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
}
break;
case StatusResult.ERROR:
case StatusAction.Result.ERROR:
ErrorUtils.showErrorMessage(this, result.exception);
if (status == null) {
finish();
@ -1008,23 +999,23 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
*
* @param result notification containing status information
*/
private void onNotificationResult(@NonNull NotificationActionResult result) {
private void onNotificationResult(@NonNull NotificationAction.Result result) {
switch (result.mode) {
case NotificationActionResult.DATABASE:
case NotificationAction.Result.DATABASE:
if (result.notification != null) {
NotificationActionParam param = new NotificationActionParam(NotificationActionParam.ONLINE, result.notification.getId());
NotificationAction.Param param = new NotificationAction.Param(NotificationAction.Param.ONLINE, result.notification.getId());
notificationLoader.execute(param, notificationCallback);
}
// fall through
case NotificationActionResult.ONLINE:
case NotificationAction.Result.ONLINE:
if (result.notification != null && result.notification.getStatus() != null) {
notification = result.notification;
setStatus(result.notification.getStatus());
}
break;
case NotificationActionResult.DISMISS:
case NotificationAction.Result.DISMISS:
if (notification != null) {
Intent intent = new Intent();
intent.putExtra(KEY_NOTIFICATION_ID, notification.getId());
@ -1034,7 +1025,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
finish();
break;
case NotificationActionResult.ERROR:
case NotificationAction.Result.ERROR:
ErrorUtils.showErrorMessage(this, result.exception);
if (notification == null) {
finish();
@ -1053,22 +1044,22 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
*
* @param result poll result
*/
private void onPollResult(@NonNull PollActionResult result) {
private void onPollResult(@NonNull PollAction.Result result) {
switch (result.mode) {
case PollActionResult.LOAD:
case PollAction.Result.LOAD:
if (result.poll != null) {
adapter.updatePoll(result.poll);
}
break;
case PollActionResult.VOTE:
case PollAction.Result.VOTE:
if (result.poll != null) {
adapter.updatePoll(result.poll);
Toast.makeText(getApplicationContext(), R.string.info_poll_voted, Toast.LENGTH_SHORT).show();
}
break;
case PollActionResult.ERROR:
case PollAction.Result.ERROR:
ErrorUtils.showErrorMessage(this, result.exception);
break;
}
@ -1077,7 +1068,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
/**
* @param result status translation result
*/
private void onTranslationResult(@NonNull TranslationResult result) {
private void onTranslationResult(@NonNull TranslationLoader.Result result) {
if (result.translation != null) {
Spannable textSpan = Tagger.makeTextWithLinks(result.translation.getText(), settings.getHighlightColor(), this);
// append translation
@ -1095,7 +1086,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
/**
* set emojis, replace emoji tags with images
*/
private void onStatusTextUpdate(@NonNull EmojiResult result) {
private void onStatusTextUpdate(@NonNull TextEmojiLoader.Result result) {
if (result.images != null) {
Spannable spannable = EmojiUtils.addEmojis(getApplicationContext(), result.spannable, result.images);
status_text.setText(spannable);
@ -1105,7 +1096,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
/**
* set emojis, replace emoji tags with images
*/
private void onUsernameUpdate(@NonNull EmojiResult result) {
private void onUsernameUpdate(@NonNull TextEmojiLoader.Result result) {
if (result.images != null) {
Spannable spannable = EmojiUtils.addEmojis(getApplicationContext(), result.spannable, result.images);
username.setText(spannable);

View File

@ -27,7 +27,6 @@ import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.InstanceLoader;
import org.nuclearfog.twidda.backend.async.StatusUpdater;
import org.nuclearfog.twidda.backend.async.StatusUpdater.StatusUpdateResult;
import org.nuclearfog.twidda.backend.helper.MediaStatus;
import org.nuclearfog.twidda.backend.helper.update.PollUpdate;
import org.nuclearfog.twidda.backend.helper.update.StatusUpdate;
@ -86,7 +85,7 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
public static final String KEY_TEXT = "status_text";
private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this);
private AsyncCallback<StatusUpdateResult> statusUpdateResult = this::onStatusUpdated;
private AsyncCallback<StatusUpdater.Result> statusUpdateResult = this::onStatusUpdated;
private AsyncCallback<Instance> instanceResult = this::onInstanceResult;
private View mediaBtn;
@ -494,7 +493,7 @@ public class StatusEditor extends MediaActivity implements ActivityResultCallbac
/**
* called when the status was successfully updated
*/
private void onStatusUpdated(@NonNull StatusUpdateResult result) {
private void onStatusUpdated(@NonNull StatusUpdater.Result result) {
if (result.exception != null) {
String message = ErrorUtils.getErrorMessage(this, result.exception);
confirmDialog.show(ConfirmDialog.STATUS_EDITOR_ERROR, message);

View File

@ -25,11 +25,7 @@ import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.api.ConnectionException;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.UserlistAction;
import org.nuclearfog.twidda.backend.async.UserlistAction.ListActionParam;
import org.nuclearfog.twidda.backend.async.UserlistAction.ListActionResult;
import org.nuclearfog.twidda.backend.async.UserlistManager;
import org.nuclearfog.twidda.backend.async.UserlistManager.ListManagerParam;
import org.nuclearfog.twidda.backend.async.UserlistManager.ListManagerResult;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.config.GlobalSettings;
@ -80,8 +76,8 @@ public class UserlistActivity extends AppCompatActivity implements ActivityResul
private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this);
private AsyncCallback<ListActionResult> userlistSet = this::setList;
private AsyncCallback<ListManagerResult> userlistUpdate = this::updateList;
private AsyncCallback<UserlistAction.Result> userlistSet = this::setList;
private AsyncCallback<UserlistManager.Result> userlistUpdate = this::updateList;
private UserlistAdapter adapter;
@ -145,7 +141,7 @@ public class UserlistActivity extends AppCompatActivity implements ActivityResul
super.onStart();
if (userList != null) {
// update list information
ListActionParam param = new ListActionParam(ListActionParam.LOAD, userList.getId());
UserlistAction.Param param = new UserlistAction.Param(UserlistAction.Param.LOAD, userList.getId());
listLoaderAsync.execute(param, userlistSet);
}
}
@ -216,7 +212,7 @@ public class UserlistActivity extends AppCompatActivity implements ActivityResul
if (userList.isFollowing()) {
confirmDialog.show(ConfirmDialog.LIST_UNFOLLOW);
} else {
ListActionParam param = new ListActionParam(ListActionParam.FOLLOW, userList.getId());
UserlistAction.Param param = new UserlistAction.Param(UserlistAction.Param.FOLLOW, userList.getId());
listLoaderAsync.execute(param, userlistSet);
}
return true;
@ -266,14 +262,14 @@ public class UserlistActivity extends AppCompatActivity implements ActivityResul
// delete user list
if (type == ConfirmDialog.LIST_DELETE && userList != null) {
if (listLoaderAsync.isIdle()) {
ListActionParam param = new ListActionParam(ListActionParam.DELETE, userList.getId());
UserlistAction.Param param = new UserlistAction.Param(UserlistAction.Param.DELETE, userList.getId());
listLoaderAsync.execute(param, userlistSet);
}
}
// unfollow user list
else if (type == ConfirmDialog.LIST_UNFOLLOW) {
if (listLoaderAsync.isIdle() && userList != null) {
ListActionParam param = new ListActionParam(ListActionParam.UNFOLLOW, userList.getId());
UserlistAction.Param param = new UserlistAction.Param(UserlistAction.Param.UNFOLLOW, userList.getId());
listLoaderAsync.execute(param, userlistSet);
}
}
@ -299,7 +295,7 @@ public class UserlistActivity extends AppCompatActivity implements ActivityResul
if (USERNAME_PATTERN.matcher(query).matches()) {
if (listManagerAsync.isIdle()) {
Toast.makeText(getApplicationContext(), R.string.info_adding_user_to_list, Toast.LENGTH_SHORT).show();
ListManagerParam param = new ListManagerParam(ListManagerParam.ADD, userList.getId(), query);
UserlistManager.Param param = new UserlistManager.Param(UserlistManager.Param.ADD, userList.getId(), query);
listManagerAsync.execute(param, userlistUpdate);
return true;
}
@ -312,9 +308,9 @@ public class UserlistActivity extends AppCompatActivity implements ActivityResul
/**
* update userlist member
*/
private void updateList(@NonNull ListManagerResult result) {
private void updateList(@NonNull UserlistManager.Result result) {
switch (result.mode) {
case ListManagerResult.ADD_USER:
case UserlistManager.Result.ADD_USER:
String name;
if (!result.name.startsWith("@"))
name = '@' + result.name;
@ -325,7 +321,7 @@ public class UserlistActivity extends AppCompatActivity implements ActivityResul
invalidateOptionsMenu();
break;
case ListManagerResult.ERROR:
case UserlistManager.Result.ERROR:
ErrorUtils.showErrorMessage(getApplicationContext(), result.exception);
break;
}
@ -334,9 +330,9 @@ public class UserlistActivity extends AppCompatActivity implements ActivityResul
/**
* update userlist content
*/
private void setList(@NonNull ListActionResult result) {
private void setList(@NonNull UserlistAction.Result result) {
switch (result.mode) {
case ListActionResult.LOAD:
case UserlistAction.Result.LOAD:
if (result.userlist != null) {
toolbar.setTitle(result.userlist.getTitle());
toolbar.setSubtitle(result.userlist.getDescription());
@ -344,17 +340,17 @@ public class UserlistActivity extends AppCompatActivity implements ActivityResul
}
break;
case ListActionResult.FOLLOW:
case UserlistAction.Result.FOLLOW:
Toast.makeText(getApplicationContext(), R.string.info_list_followed, Toast.LENGTH_SHORT).show();
invalidateOptionsMenu();
break;
case ListActionResult.UNFOLLOW:
case UserlistAction.Result.UNFOLLOW:
Toast.makeText(getApplicationContext(), R.string.info_list_unfollowed, Toast.LENGTH_SHORT).show();
invalidateOptionsMenu();
break;
case ListActionResult.DELETE:
case UserlistAction.Result.DELETE:
Intent intent = new Intent();
intent.putExtra(KEY_ID, result.id);
setResult(RETURN_LIST_REMOVED, intent);
@ -362,7 +358,7 @@ public class UserlistActivity extends AppCompatActivity implements ActivityResul
finish();
break;
case ListActionResult.ERROR:
case UserlistAction.Result.ERROR:
ErrorUtils.showErrorMessage(getApplicationContext(), result.exception);
if (result.exception != null && result.exception.getErrorCode() == ConnectionException.RESOURCE_NOT_FOUND) {
// List does not exist

View File

@ -18,7 +18,6 @@ import androidx.appcompat.app.AppCompatActivity;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.UserlistUpdater;
import org.nuclearfog.twidda.backend.async.UserlistUpdater.ListUpdateResult;
import org.nuclearfog.twidda.backend.helper.update.UserListUpdate;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
@ -36,7 +35,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class UserlistEditor extends AppCompatActivity implements OnClickListener, OnConfirmListener, OnProgressStopListener, AsyncCallback<ListUpdateResult> {
public class UserlistEditor extends AppCompatActivity implements OnClickListener, OnConfirmListener, OnProgressStopListener, AsyncCallback<UserlistUpdater.Result> {
/**
* Key for the list ID if an existing list should be updated
@ -179,7 +178,7 @@ public class UserlistEditor extends AppCompatActivity implements OnClickListener
@Override
public void onResult(@NonNull ListUpdateResult result) {
public void onResult(@NonNull UserlistUpdater.Result result) {
if (result.userlist != null) {
if (result.updated) {
Toast.makeText(getApplicationContext(), R.string.info_list_updated, Toast.LENGTH_SHORT).show();

View File

@ -21,8 +21,6 @@ import androidx.viewpager2.widget.ViewPager2;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.UserFilterAction;
import org.nuclearfog.twidda.backend.async.UserFilterAction.FilterParam;
import org.nuclearfog.twidda.backend.async.UserFilterAction.FilterResult;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.config.GlobalSettings;
@ -37,7 +35,7 @@ import java.util.regex.Pattern;
*
* @author nuclearfog
*/
public class UsersActivity extends AppCompatActivity implements OnTabSelectedListener, OnQueryTextListener, AsyncCallback<FilterResult> {
public class UsersActivity extends AppCompatActivity implements OnTabSelectedListener, OnQueryTextListener, AsyncCallback<UserFilterAction.Result> {
/**
* type of users to get from the source
@ -237,21 +235,21 @@ public class UsersActivity extends AppCompatActivity implements OnTabSelectedLis
return false;
if (viewPager.getCurrentItem() == 0) {
if (USERNAME_PATTERN.matcher(query).matches()) {
FilterParam param = new FilterParam(FilterParam.MUTE_USER, query);
UserFilterAction.Param param = new UserFilterAction.Param(UserFilterAction.Param.MUTE_USER, query);
filterLoader.execute(param, this);
return true;
}
Toast.makeText(getApplicationContext(), R.string.error_username_format, Toast.LENGTH_SHORT).show();
} else if (viewPager.getCurrentItem() == 1) {
if (USERNAME_PATTERN.matcher(query).matches()) {
FilterParam param = new FilterParam(FilterParam.BLOCK_USER, query);
UserFilterAction.Param param = new UserFilterAction.Param(UserFilterAction.Param.BLOCK_USER, query);
filterLoader.execute(param, this);
return true;
}
Toast.makeText(getApplicationContext(), R.string.error_username_format, Toast.LENGTH_SHORT).show();
} else if (viewPager.getCurrentItem() == 2) {
if (Patterns.WEB_URL.matcher(query).matches()) {
FilterParam param = new FilterParam(FilterParam.BLOCK_DOMAIN, Uri.parse(query).getHost());
UserFilterAction.Param param = new UserFilterAction.Param(UserFilterAction.Param.BLOCK_DOMAIN, Uri.parse(query).getHost());
filterLoader.execute(param, this);
return true;
}
@ -268,21 +266,21 @@ public class UsersActivity extends AppCompatActivity implements OnTabSelectedLis
@Override
public void onResult(@NonNull FilterResult result) {
public void onResult(@NonNull UserFilterAction.Result result) {
switch (result.mode) {
case FilterResult.MUTE_USER:
case UserFilterAction.Result.MUTE_USER:
Toast.makeText(getApplicationContext(), R.string.info_user_muted, Toast.LENGTH_SHORT).show();
invalidateOptionsMenu();
break;
case FilterResult.BLOCK_DOMAIN:
case FilterResult.BLOCK_USER:
case UserFilterAction.Result.BLOCK_DOMAIN:
case UserFilterAction.Result.BLOCK_USER:
Toast.makeText(getApplicationContext(), R.string.info_blocked, Toast.LENGTH_SHORT).show();
invalidateOptionsMenu();
break;
default:
case FilterResult.ERROR:
case UserFilterAction.Result.ERROR:
ErrorUtils.showErrorMessage(getApplicationContext(), result.exception);
break;
}

View File

@ -17,8 +17,8 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.Param;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.Result;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
import org.nuclearfog.twidda.backend.utils.StringUtils;
@ -32,7 +32,7 @@ import org.nuclearfog.twidda.model.Poll.Option;
* @author nuclearfog
* @see org.nuclearfog.twidda.ui.adapter.recyclerview.OptionsAdapter
*/
public class Optionholder extends ViewHolder implements OnClickListener, AsyncCallback<EmojiResult> {
public class Optionholder extends ViewHolder implements OnClickListener, AsyncCallback<Result> {
private SeekBar voteProgress;
private TextView optionName, optionVotes;
@ -82,7 +82,7 @@ public class Optionholder extends ViewHolder implements OnClickListener, AsyncCa
@Override
public void onResult(@NonNull EmojiResult result) {
public void onResult(@NonNull Result result) {
if (result.images != null && result.id == tagId) {
Spannable spannable = EmojiUtils.addEmojis(optionName.getContext(), result.spannable, result.images);
optionName.setText(spannable);
@ -104,7 +104,7 @@ public class Optionholder extends ViewHolder implements OnClickListener, AsyncCa
if (emojis.length > 0 && settings.imagesEnabled()) {
tagId = option.getTitle().hashCode();
SpannableString optionSpan = new SpannableString(option.getTitle());
EmojiParam param = new EmojiParam(tagId, emojis, optionSpan, optionName.getResources().getDimensionPixelSize(R.dimen.item_option_emoji_size));
Param param = new Param(tagId, emojis, optionSpan, optionName.getResources().getDimensionPixelSize(R.dimen.item_option_emoji_size));
optionName.setText(EmojiUtils.removeTags(optionSpan));
emojiLoader.execute(param, this);
} else {

View File

@ -27,8 +27,8 @@ import org.nuclearfog.tag.Tagger;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.Param;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.Result;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
@ -66,8 +66,8 @@ public class StatusHolder extends ViewHolder implements OnClickListener, OnMedia
private IconAdapter adapter;
private OnHolderClickListener listener;
private AsyncCallback<EmojiResult> textResult = this::setTextEmojis;
private AsyncCallback<EmojiResult> usernameResult = this::setUsernameEmojis;
private AsyncCallback<Result> textResult = this::setTextEmojis;
private AsyncCallback<Result> usernameResult = this::setUsernameEmojis;
private long tagId = 0L;
@ -169,7 +169,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener, OnMedia
// set username and emojis
if (author.getEmojis().length > 0 && !author.getUsername().trim().isEmpty() && settings.imagesEnabled()) {
SpannableString usernameSpan = new SpannableString(author.getUsername());
EmojiParam param = new EmojiParam(tagId, author.getEmojis(), usernameSpan, statusText.getResources().getDimensionPixelSize(R.dimen.item_status_icon_size));
Param param = new Param(tagId, author.getEmojis(), usernameSpan, statusText.getResources().getDimensionPixelSize(R.dimen.item_status_icon_size));
emojiLoader.execute(param, usernameResult);
username.setText(EmojiUtils.removeTags(usernameSpan));
} else {
@ -179,7 +179,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener, OnMedia
if (!status.getText().trim().isEmpty()) {
Spannable textSpan = Tagger.makeTextWithLinks(status.getText(), settings.getHighlightColor());
if (status.getEmojis().length > 0 && settings.imagesEnabled()) {
EmojiParam param = new EmojiParam(tagId, status.getEmojis(), textSpan, statusText.getResources().getDimensionPixelSize(R.dimen.item_status_icon_size));
Param param = new Param(tagId, status.getEmojis(), textSpan, statusText.getResources().getDimensionPixelSize(R.dimen.item_status_icon_size));
emojiLoader.execute(param, textResult);
textSpan = EmojiUtils.removeTags(textSpan);
}
@ -309,7 +309,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener, OnMedia
*
* @param result username with emojis
*/
private void setUsernameEmojis(@NonNull EmojiResult result) {
private void setUsernameEmojis(@NonNull Result result) {
if (result.id == tagId && result.images != null) {
Spannable spannable = EmojiUtils.addEmojis(username.getContext(), result.spannable, result.images);
username.setText(spannable);
@ -321,7 +321,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener, OnMedia
*
* @param result status text with emojis
*/
private void setTextEmojis(@NonNull EmojiResult result) {
private void setTextEmojis(@NonNull Result result) {
if (result.id == tagId && result.images != null) {
Spannable spannable = EmojiUtils.addEmojis(statusText.getContext(), result.spannable, result.images);
statusText.setText(spannable);

View File

@ -25,8 +25,8 @@ import com.squareup.picasso.Transformation;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.Param;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.Result;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
@ -43,7 +43,7 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
* @author nuclearfog
* @see org.nuclearfog.twidda.ui.adapter.recyclerview.UserAdapter
*/
public class UserHolder extends ViewHolder implements OnClickListener, AsyncCallback<EmojiResult> {
public class UserHolder extends ViewHolder implements OnClickListener, AsyncCallback<Result> {
private static final int EMPTY_COLOR = 0x2F000000;
@ -116,7 +116,7 @@ public class UserHolder extends ViewHolder implements OnClickListener, AsyncCall
@Override
public void onResult(@NonNull EmojiResult result) {
public void onResult(@NonNull Result result) {
if (result.id == tagId && result.images != null) {
Spannable spannable = EmojiUtils.addEmojis(username.getContext(), result.spannable, result.images);
username.setText(spannable);
@ -145,7 +145,7 @@ public class UserHolder extends ViewHolder implements OnClickListener, AsyncCall
}
if (user.getEmojis().length > 0 && !user.getUsername().trim().isEmpty() && settings.imagesEnabled()) {
Spannable usernameSpan = new SpannableString(user.getUsername());
EmojiParam param = new EmojiParam(tagId, user.getEmojis(), usernameSpan, username.getResources().getDimensionPixelSize(R.dimen.item_user_icon_size));
Param param = new Param(tagId, user.getEmojis(), usernameSpan, username.getResources().getDimensionPixelSize(R.dimen.item_user_icon_size));
emojiLoader.execute(param, this);
username.setText(EmojiUtils.removeTags(usernameSpan));
} else {

View File

@ -23,8 +23,8 @@ import com.squareup.picasso.Transformation;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.Param;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.Result;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
@ -47,7 +47,7 @@ public class UserlistHolder extends ViewHolder implements OnClickListener {
private static final int EMPTY_COLOR = 0x2F000000;
private AsyncExecutor.AsyncCallback<EmojiResult> usernameResult = this::setUsernameEmojis;
private AsyncExecutor.AsyncCallback<Result> usernameResult = this::setUsernameEmojis;
private ImageView profileImage, userVerified, userLocked, privateIcon, followIcon;
private TextView title, description, username, screenname, date, member, subscriber, followList;
@ -143,7 +143,7 @@ public class UserlistHolder extends ViewHolder implements OnClickListener {
String profileImageUrl = owner.getProfileImageThumbnailUrl();
if (owner.getEmojis().length > 0 && !owner.getUsername().trim().isEmpty() && settings.imagesEnabled()) {
SpannableString usernameSpan = new SpannableString(owner.getUsername());
EmojiParam param = new EmojiParam(tagId, owner.getEmojis(), usernameSpan, username.getResources().getDimensionPixelSize(R.dimen.item_user_icon_size));
Param param = new Param(tagId, owner.getEmojis(), usernameSpan, username.getResources().getDimensionPixelSize(R.dimen.item_user_icon_size));
emojiLoader.execute(param, usernameResult);
username.setText(EmojiUtils.removeTags(usernameSpan));
} else {
@ -193,7 +193,7 @@ public class UserlistHolder extends ViewHolder implements OnClickListener {
*
* @param result username text with emojis
*/
private void setUsernameEmojis(@NonNull EmojiResult result) {
private void setUsernameEmojis(@NonNull Result result) {
if (result.id == tagId && result.images != null) {
Spannable spannable = EmojiUtils.addEmojis(username.getContext(), result.spannable, result.images);
username.setText(spannable);

View File

@ -22,8 +22,6 @@ import com.kyleduo.switchbutton.SwitchButton;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.StatusFilterAction;
import org.nuclearfog.twidda.backend.async.StatusFilterAction.FilterActionParam;
import org.nuclearfog.twidda.backend.async.StatusFilterAction.FilterActionResult;
import org.nuclearfog.twidda.backend.helper.update.FilterUpdate;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
@ -38,7 +36,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class FilterDialog extends Dialog implements OnClickListener, OnCheckedChangeListener, AsyncCallback<FilterActionResult> {
public class FilterDialog extends Dialog implements OnClickListener, OnCheckedChangeListener, AsyncCallback<StatusFilterAction.Result> {
private static final String KEY_SAVE = "filterupdate-save";
@ -201,7 +199,7 @@ public class FilterDialog extends Dialog implements OnClickListener, OnCheckedCh
if (txt_keywords.length() > 0)
update.setKeywords(txt_keywords.getText().toString().split("\n"));
update.setTitle(txt_title.getText().toString());
FilterActionParam param = new FilterActionParam(FilterActionParam.UPDATE, 0L, update);
StatusFilterAction.Param param = new StatusFilterAction.Param(StatusFilterAction.Param.UPDATE, 0L, update);
filterAction.execute(param, this);
}
}
@ -234,13 +232,13 @@ public class FilterDialog extends Dialog implements OnClickListener, OnCheckedCh
@Override
public void onResult(@NonNull FilterActionResult result) {
if (result.mode == FilterActionResult.UPDATE) {
public void onResult(@NonNull StatusFilterAction.Result result) {
if (result.mode == StatusFilterAction.Result.UPDATE) {
Toast.makeText(getContext(), R.string.info_filter_created, Toast.LENGTH_SHORT).show();
if (result.filter != null)
callback.onFilterUpdated(result.filter);
dismiss();
} else if (result.mode == FilterActionResult.ERROR) {
} else if (result.mode == StatusFilterAction.Result.ERROR) {
ErrorUtils.showErrorMessage(getContext(), result.exception);
}
}

View File

@ -18,7 +18,6 @@ import com.kyleduo.switchbutton.SwitchButton;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.ReportUpdater;
import org.nuclearfog.twidda.backend.async.ReportUpdater.ReportResult;
import org.nuclearfog.twidda.backend.helper.update.ReportUpdate;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
@ -32,7 +31,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class ReportDialog extends Dialog implements OnClickListener, AsyncCallback<ReportResult> {
public class ReportDialog extends Dialog implements OnClickListener, AsyncCallback<ReportUpdater.Result> {
private static final String KEY_SAVE = "reportupdate-data";
@ -130,15 +129,15 @@ public class ReportDialog extends Dialog implements OnClickListener, AsyncCallba
@Override
public void onResult(@NonNull ReportResult reportResult) {
if (reportResult.reported) {
public void onResult(@NonNull ReportUpdater.Result result) {
if (result.reported) {
if (update != null && update.getStatusIds().length > 0) {
Toast.makeText(getContext(), R.string.info_status_reported, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getContext(), R.string.info_user_reported, Toast.LENGTH_SHORT).show();
}
} else {
ErrorUtils.showErrorMessage(getContext(), reportResult.exception);
ErrorUtils.showErrorMessage(getContext(), result.exception);
}
}

View File

@ -21,7 +21,6 @@ import com.kyleduo.switchbutton.SwitchButton;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.PushUpdater;
import org.nuclearfog.twidda.backend.async.PushUpdater.PushUpdateResult;
import org.nuclearfog.twidda.backend.helper.update.PushUpdate;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
@ -36,7 +35,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class WebPushDialog extends Dialog implements OnCheckedChangeListener, OnClickListener, OnItemSelectedListener, AsyncCallback<PushUpdateResult> {
public class WebPushDialog extends Dialog implements OnCheckedChangeListener, OnClickListener, OnItemSelectedListener, AsyncCallback<PushUpdater.Result> {
private static final String KEY_SAVE = "push-update";
@ -208,7 +207,7 @@ public class WebPushDialog extends Dialog implements OnCheckedChangeListener, On
@Override
public void onResult(@NonNull PushUpdateResult result) {
public void onResult(@NonNull PushUpdater.Result result) {
if (result.push != null) {
Toast.makeText(getContext(), R.string.info_webpush_update, Toast.LENGTH_SHORT).show();
dismiss();

View File

@ -9,13 +9,10 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AccountAction;
import org.nuclearfog.twidda.backend.async.AccountLoader;
import org.nuclearfog.twidda.backend.async.AccountLoader.AccountParameter;
import org.nuclearfog.twidda.backend.async.AccountLoader.AccountResult;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.DatabaseAction;
import org.nuclearfog.twidda.backend.async.DatabaseAction.DatabaseParam;
import org.nuclearfog.twidda.backend.async.DatabaseAction.DatabaseResult;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.model.Account;
import org.nuclearfog.twidda.model.lists.Accounts;
@ -33,7 +30,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class AccountFragment extends ListFragment implements OnAccountClickListener, OnConfirmListener, AsyncCallback<AccountResult> {
public class AccountFragment extends ListFragment implements OnAccountClickListener, OnConfirmListener {
/**
* internal Bundle key used to save adapter items
@ -42,6 +39,7 @@ public class AccountFragment extends ListFragment implements OnAccountClickListe
private static final String KEY_SAVE = "account-data";
private AccountLoader accountLoader;
private AccountAction accountAction;
private DatabaseAction databaseAction;
private GlobalSettings settings;
private AccountAdapter adapter;
@ -49,7 +47,9 @@ public class AccountFragment extends ListFragment implements OnAccountClickListe
private long selectedId;
private AsyncCallback<DatabaseResult> databaseResult = this::onDatabaseResult;
private AsyncCallback<AccountLoader.Result> accountLoaderResult = this::onLoaderResult;
private AsyncCallback<AccountAction.Result> accountActionResult = this::onActionResult;
private AsyncCallback<DatabaseAction.Result> databaseResult = this::onDatabaseResult;
@Override
@ -58,6 +58,7 @@ public class AccountFragment extends ListFragment implements OnAccountClickListe
dialog = new ConfirmDialog(requireActivity(), this);
settings = GlobalSettings.get(requireContext());
accountLoader = new AccountLoader(requireContext());
accountAction = new AccountAction(requireContext());
databaseAction = new DatabaseAction(requireContext());
adapter = new AccountAdapter(this);
setAdapter(adapter);
@ -69,7 +70,7 @@ public class AccountFragment extends ListFragment implements OnAccountClickListe
return;
}
}
load(AccountParameter.LOAD);
load();
setRefresh(true);
}
@ -91,7 +92,7 @@ public class AccountFragment extends ListFragment implements OnAccountClickListe
@Override
protected void onReload() {
load(AccountParameter.LOAD);
load();
}
@ -100,7 +101,7 @@ public class AccountFragment extends ListFragment implements OnAccountClickListe
adapter.clear();
accountLoader = new AccountLoader(requireContext());
databaseAction = new DatabaseAction(requireContext());
load(AccountParameter.LOAD);
load();
setRefresh(true);
}
@ -120,13 +121,13 @@ public class AccountFragment extends ListFragment implements OnAccountClickListe
intent.putExtra(AccountActivity.RETURN_ACCOUNT, account);
requireActivity().setResult(AccountActivity.RETURN_ACCOUNT_CHANGED, intent);
// clear old database entries
databaseAction.execute(new DatabaseParam(DatabaseParam.DELETE), databaseResult);
databaseAction.execute(new DatabaseAction.Param(DatabaseAction.Param.DELETE), databaseResult);
}
@Override
public void onAccountRemove(Account account) {
if (!dialog.isShowing()) {
if (!dialog.isShowing() && accountLoader.isIdle() && accountAction.isIdle()) {
selectedId = account.getId();
dialog.show(ConfirmDialog.REMOVE_ACCOUNT);
}
@ -136,37 +137,16 @@ public class AccountFragment extends ListFragment implements OnAccountClickListe
@Override
public void onConfirm(int type, boolean remember) {
if (type == ConfirmDialog.REMOVE_ACCOUNT) {
load(AccountParameter.DELETE);
AccountAction.Param param = new AccountAction.Param(selectedId);
accountAction.execute(param, accountActionResult);
}
}
@Override
public void onResult(@NonNull AccountResult result) {
switch (result.mode) {
case AccountResult.LOAD:
if (result.accounts != null) {
adapter.replaceItems(result.accounts);
}
break;
case AccountResult.DELETE:
adapter.removeItem(result.id);
break;
case AccountResult.ERROR:
if (getContext() != null)
Toast.makeText(getContext(), R.string.error_acc_loading, Toast.LENGTH_SHORT).show();
break;
}
setRefresh(false);
}
/**
* called from {@link DatabaseAction} when all data of the previous login were removed
*/
@SuppressWarnings("unused")
private void onDatabaseResult(DatabaseResult result) {
private void onDatabaseResult(DatabaseAction.Result result) {
// finish activity and return to parent activity
requireActivity().finish();
}
@ -174,8 +154,22 @@ public class AccountFragment extends ListFragment implements OnAccountClickListe
/**
*
*/
private void load(int mode) {
AccountParameter request = new AccountParameter(mode, selectedId);
accountLoader.execute(request, this);
private void load() {
accountLoader.execute(null, accountLoaderResult);
}
/**
*
*/
private void onLoaderResult(AccountLoader.Result result) {
adapter.replaceItems(result.accounts);
setRefresh(false);
}
/**
*
*/
private void onActionResult(AccountAction.Result result) {
adapter.removeItem(result.id);
}
}

View File

@ -10,8 +10,8 @@ import androidx.annotation.Nullable;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.DomainAction;
import org.nuclearfog.twidda.backend.async.DomainAction.DomainParam;
import org.nuclearfog.twidda.backend.async.DomainAction.DomainResult;
import org.nuclearfog.twidda.backend.async.DomainAction.Param;
import org.nuclearfog.twidda.backend.async.DomainAction.Result;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.model.lists.Domains;
import org.nuclearfog.twidda.ui.adapter.recyclerview.DomainAdapter;
@ -26,7 +26,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class DomainFragment extends ListFragment implements OnDomainClickListener, OnConfirmListener, AsyncCallback<DomainResult> {
public class DomainFragment extends ListFragment implements OnDomainClickListener, OnConfirmListener, AsyncCallback<Result> {
private static final String KEY_DATA = "domain-data";
@ -51,7 +51,7 @@ public class DomainFragment extends ListFragment implements OnDomainClickListene
return;
}
}
load(DomainAdapter.NO_INDEX, DomainParam.NO_CURSOR);
load(DomainAdapter.NO_INDEX, Param.NO_CURSOR);
setRefresh(true);
}
@ -72,7 +72,7 @@ public class DomainFragment extends ListFragment implements OnDomainClickListene
@Override
protected void onReload() {
load(DomainAdapter.NO_INDEX, DomainParam.NO_CURSOR);
load(DomainAdapter.NO_INDEX, Param.NO_CURSOR);
}
@ -80,7 +80,7 @@ public class DomainFragment extends ListFragment implements OnDomainClickListene
protected void onReset() {
adapter.clear();
domainAction = new DomainAction(requireContext());
load(DomainAdapter.NO_INDEX, DomainParam.NO_CURSOR);
load(DomainAdapter.NO_INDEX, Param.NO_CURSOR);
setRefresh(true);
}
@ -105,18 +105,18 @@ public class DomainFragment extends ListFragment implements OnDomainClickListene
@Override
public void onResult(@NonNull DomainResult result) {
public void onResult(@NonNull Result result) {
setRefresh(false);
if (result.mode == DomainResult.MODE_LOAD) {
if (result.mode == Result.MODE_LOAD) {
if (result.domains != null) {
adapter.addItems(result.domains, result.index);
}
} else if (result.mode == DomainResult.MODE_UNBLOCK) {
} else if (result.mode == Result.MODE_UNBLOCK) {
if (result.domain != null) {
adapter.removeItem(result.domain);
Toast.makeText(requireContext(), R.string.info_domain_removed, Toast.LENGTH_SHORT).show();
}
} else if (result.mode == DomainResult.ERROR) {
} else if (result.mode == Result.ERROR) {
if (getContext() != null) {
ErrorUtils.showErrorMessage(getContext(), result.exception);
}
@ -128,7 +128,7 @@ public class DomainFragment extends ListFragment implements OnDomainClickListene
@Override
public void onConfirm(int type, boolean remember) {
if (type == ConfirmDialog.DOMAIN_BLOCK_REMOVE) {
DomainParam param = new DomainParam(DomainParam.MODE_UNBLOCK, DomainAdapter.NO_INDEX, DomainParam.NO_CURSOR, selectedDomain);
Param param = new Param(Param.MODE_UNBLOCK, DomainAdapter.NO_INDEX, Param.NO_CURSOR, selectedDomain);
domainAction.execute(param, this);
}
}
@ -140,7 +140,7 @@ public class DomainFragment extends ListFragment implements OnDomainClickListene
* @param cursor cursor used to page through results
*/
private void load(int index, long cursor) {
DomainParam param = new DomainParam(DomainParam.MODE_LOAD, index, cursor, null);
Param param = new Param(Param.MODE_LOAD, index, cursor, null);
domainAction.execute(param, this);
}
}

View File

@ -10,10 +10,7 @@ import androidx.annotation.Nullable;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.StatusFilterAction;
import org.nuclearfog.twidda.backend.async.StatusFilterAction.FilterActionParam;
import org.nuclearfog.twidda.backend.async.StatusFilterAction.FilterActionResult;
import org.nuclearfog.twidda.backend.async.StatusFilterLoader;
import org.nuclearfog.twidda.backend.async.StatusFilterLoader.FilterLoaderResult;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.model.Filter;
import org.nuclearfog.twidda.ui.adapter.recyclerview.FilterAdapter;
@ -30,8 +27,8 @@ import org.nuclearfog.twidda.ui.dialogs.FilterDialog.FilterDialogCallback;
*/
public class FilterFragment extends ListFragment implements OnFilterClickListener, OnConfirmListener, FilterDialogCallback {
private AsyncCallback<FilterLoaderResult> filterLoadCallback = this::onFilterLoaded;
private AsyncCallback<FilterActionResult> filterRemoveCallback = this::onFilterRemoved;
private AsyncCallback<StatusFilterLoader.Result> filterLoadCallback = this::onFilterLoaded;
private AsyncCallback<StatusFilterAction.Result> filterRemoveCallback = this::onFilterRemoved;
private FilterAdapter adapter;
private StatusFilterLoader filterLoader;
@ -99,7 +96,7 @@ public class FilterFragment extends ListFragment implements OnFilterClickListene
@Override
public void onConfirm(int type, boolean remember) {
if (type == ConfirmDialog.FILTER_REMOVE) {
FilterActionParam param = new FilterActionParam(FilterActionParam.DELETE, selection.getId(), null);
StatusFilterAction.Param param = new StatusFilterAction.Param(StatusFilterAction.Param.DELETE, selection.getId(), null);
filterAction.execute(param, filterRemoveCallback);
}
}
@ -125,7 +122,7 @@ public class FilterFragment extends ListFragment implements OnFilterClickListene
/**
*
*/
private void onFilterLoaded(FilterLoaderResult result) {
private void onFilterLoaded(StatusFilterLoader.Result result) {
if (result.filters != null) {
adapter.replaceItems(result.filters);
} else if (result.exception != null && getContext() != null) {
@ -137,13 +134,13 @@ public class FilterFragment extends ListFragment implements OnFilterClickListene
/**
*
*/
private void onFilterRemoved(FilterActionResult result) {
if (result.mode == FilterActionResult.DELETE) {
private void onFilterRemoved(StatusFilterAction.Result result) {
if (result.mode == StatusFilterAction.Result.DELETE) {
adapter.removeItem(result.id);
if (getContext() != null) {
Toast.makeText(requireContext(), R.string.info_filter_removed, Toast.LENGTH_SHORT).show();
}
} else if (result.mode == FilterActionResult.ERROR) {
} else if (result.mode == StatusFilterAction.Result.ERROR) {
if (getContext() != null) {
ErrorUtils.showErrorMessage(requireContext(), result.exception);
}

View File

@ -15,11 +15,7 @@ import androidx.annotation.Nullable;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.HashtagAction;
import org.nuclearfog.twidda.backend.async.HashtagAction.HashtagActionParam;
import org.nuclearfog.twidda.backend.async.HashtagAction.HashtagActionResult;
import org.nuclearfog.twidda.backend.async.HashtagLoader;
import org.nuclearfog.twidda.backend.async.HashtagLoader.HashtagLoaderParam;
import org.nuclearfog.twidda.backend.async.HashtagLoader.HashtagLoaderResult;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.model.Hashtag;
import org.nuclearfog.twidda.model.lists.Trends;
@ -78,8 +74,8 @@ public class HashtagFragment extends ListFragment implements OnHashtagClickListe
private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this);
private AsyncCallback<HashtagActionResult> hashtagActionCallback = this::onHashtagActionResult;
private AsyncCallback<HashtagLoaderResult> hashtagLoaderCallback = this::onHashtagLoaderResult;
private AsyncCallback<HashtagAction.Result> hashtagActionCallback = this::onHashtagActionResult;
private AsyncCallback<HashtagLoader.Result> hashtagLoaderCallback = this::onHashtagLoaderResult;
private HashtagLoader hashtagLoader;
private HashtagAction hashtagAction;
@ -116,7 +112,7 @@ public class HashtagFragment extends ListFragment implements OnHashtagClickListe
}
}
setRefresh(true);
load(HashtagLoaderParam.NO_CURSOR, HashtagAdapter.CLEAR_LIST);
load(HashtagLoader.Param.NO_CURSOR, HashtagAdapter.CLEAR_LIST);
}
@ -138,14 +134,14 @@ public class HashtagFragment extends ListFragment implements OnHashtagClickListe
protected void onReset() {
adapter.clear();
hashtagLoader = new HashtagLoader(requireContext());
load(HashtagLoaderParam.NO_CURSOR, HashtagAdapter.CLEAR_LIST);
load(HashtagLoader.Param.NO_CURSOR, HashtagAdapter.CLEAR_LIST);
setRefresh(true);
}
@Override
protected void onReload() {
load(HashtagLoaderParam.NO_CURSOR, HashtagAdapter.CLEAR_LIST);
load(HashtagLoader.Param.NO_CURSOR, HashtagAdapter.CLEAR_LIST);
}
@ -207,10 +203,10 @@ public class HashtagFragment extends ListFragment implements OnHashtagClickListe
public void onConfirm(int type, boolean remember) {
if (selection != null) {
if (type == ConfirmDialog.UNFOLLOW_HASHTAG) {
HashtagActionParam param = new HashtagActionParam(HashtagActionParam.UNFOLLOW, selection.getName(), selection.getId());
HashtagAction.Param param = new HashtagAction.Param(HashtagAction.Param.UNFOLLOW, selection.getName(), selection.getId());
hashtagAction.execute(param, hashtagActionCallback);
} else if (type == ConfirmDialog.UNFEATURE_HASHTAG) {
HashtagActionParam param = new HashtagActionParam(HashtagActionParam.UNFEATURE, selection.getName(), selection.getId());
HashtagAction.Param param = new HashtagAction.Param(HashtagAction.Param.UNFEATURE, selection.getName(), selection.getId());
hashtagAction.execute(param, hashtagActionCallback);
}
}
@ -219,14 +215,14 @@ public class HashtagFragment extends ListFragment implements OnHashtagClickListe
/**
* callback for {@link HashtagAction}
*/
private void onHashtagActionResult(@NonNull HashtagActionResult result) {
if (result.mode == HashtagActionResult.UNFEATURE) {
private void onHashtagActionResult(@NonNull HashtagAction.Result result) {
if (result.mode == HashtagAction.Result.UNFEATURE) {
Toast.makeText(requireContext(), R.string.info_hashtag_unfeatured, Toast.LENGTH_SHORT).show();
adapter.removeItem(result.hashtag);
} else if (result.mode == HashtagActionResult.UNFOLLOW) {
} else if (result.mode == HashtagAction.Result.UNFOLLOW) {
Toast.makeText(requireContext(), R.string.info_hashtag_unfollowed, Toast.LENGTH_SHORT).show();
adapter.removeItem(result.hashtag);
} else if (result.mode == HashtagActionResult.ERROR) {
} else if (result.mode == HashtagAction.Result.ERROR) {
ErrorUtils.showErrorMessage(requireContext(), result.exception);
}
}
@ -234,8 +230,8 @@ public class HashtagFragment extends ListFragment implements OnHashtagClickListe
/**
* callback for {@link HashtagLoader}
*/
private void onHashtagLoaderResult(@NonNull HashtagLoaderResult result) {
if (result.mode == HashtagLoaderResult.ERROR) {
private void onHashtagLoaderResult(@NonNull HashtagLoader.Result result) {
if (result.mode == HashtagLoader.Result.ERROR) {
if (getContext() != null) {
ErrorUtils.showErrorMessage(getContext(), result.exception);
}
@ -250,29 +246,29 @@ public class HashtagFragment extends ListFragment implements OnHashtagClickListe
* load content into the list
*/
private void load(long cursor, int index) {
HashtagLoaderParam param;
HashtagLoader.Param param;
switch (mode) {
case MODE_POPULAR:
if (adapter.isEmpty()) {
param = new HashtagLoaderParam(HashtagLoaderParam.POPULAR_OFFLINE, index, search, cursor);
param = new HashtagLoader.Param(HashtagLoader.Param.POPULAR_OFFLINE, index, search, cursor);
} else {
param = new HashtagLoaderParam(HashtagLoaderParam.POPULAR_ONLINE, index, search, cursor);
param = new HashtagLoader.Param(HashtagLoader.Param.POPULAR_ONLINE, index, search, cursor);
}
hashtagLoader.execute(param, hashtagLoaderCallback);
break;
case MODE_FOLLOW:
param = new HashtagLoaderParam(HashtagLoaderParam.FOLLOWING, index, search, cursor);
param = new HashtagLoader.Param(HashtagLoader.Param.FOLLOWING, index, search, cursor);
hashtagLoader.execute(param, hashtagLoaderCallback);
break;
case MODE_FEATURE:
param = new HashtagLoaderParam(HashtagLoaderParam.FEATURING, index, search, cursor);
param = new HashtagLoader.Param(HashtagLoader.Param.FEATURING, index, search, cursor);
hashtagLoader.execute(param, hashtagLoaderCallback);
break;
case MODE_SEARCH:
param = new HashtagLoaderParam(HashtagLoaderParam.SEARCH, index, search, cursor);
param = new HashtagLoader.Param(HashtagLoader.Param.SEARCH, index, search, cursor);
hashtagLoader.execute(param, hashtagLoaderCallback);
break;
}

View File

@ -14,11 +14,9 @@ import androidx.annotation.Nullable;
import org.nuclearfog.twidda.backend.api.ConnectionException;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.NotificationAction;
import org.nuclearfog.twidda.backend.async.NotificationAction.NotificationActionParam;
import org.nuclearfog.twidda.backend.async.NotificationAction.NotificationActionResult;
import org.nuclearfog.twidda.backend.async.NotificationLoader;
import org.nuclearfog.twidda.backend.async.NotificationLoader.NotificationLoaderParam;
import org.nuclearfog.twidda.backend.async.NotificationLoader.NotificationLoaderResult;
import org.nuclearfog.twidda.backend.async.NotificationLoader.Param;
import org.nuclearfog.twidda.backend.async.NotificationLoader.Result;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.model.Notification;
import org.nuclearfog.twidda.model.User;
@ -47,8 +45,8 @@ public class NotificationFragment extends ListFragment implements OnNotification
private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this);
private AsyncCallback<NotificationActionResult> notificationActionCallback = this::onDismiss;
private AsyncCallback<NotificationLoaderResult> notificationLoaderCallback = this::onResult;
private AsyncCallback<NotificationAction.Result> notificationActionCallback = this::onDismiss;
private AsyncCallback<Result> notificationLoaderCallback = this::onResult;
private NotificationLoader notificationLoader;
private NotificationAction notificationAction;
@ -175,14 +173,14 @@ public class NotificationFragment extends ListFragment implements OnNotification
public void onConfirm(int type, boolean remember) {
if (type == ConfirmDialog.NOTIFICATION_DISMISS) {
if (select != null) {
NotificationActionParam param = new NotificationActionParam(NotificationActionParam.DISMISS, select.getId());
NotificationAction.Param param = new NotificationAction.Param(NotificationAction.Param.DISMISS, select.getId());
notificationAction.execute(param, notificationActionCallback);
}
}
}
private void onResult(@NonNull NotificationLoaderResult result) {
private void onResult(@NonNull Result result) {
if (result.notifications != null) {
adapter.addItems(result.notifications, result.position);
} else {
@ -197,10 +195,10 @@ public class NotificationFragment extends ListFragment implements OnNotification
/**
*
*/
private void onDismiss(@NonNull NotificationActionResult result) {
if (result.mode == NotificationActionResult.DISMISS) {
private void onDismiss(@NonNull NotificationAction.Result result) {
if (result.mode == NotificationAction.Result.DISMISS) {
adapter.removeItem(result.id);
} else if (result.mode == NotificationActionResult.ERROR) {
} else if (result.mode == NotificationAction.Result.ERROR) {
if (getContext() != null) {
ErrorUtils.showErrorMessage(getContext(), result.exception);
}
@ -216,7 +214,7 @@ public class NotificationFragment extends ListFragment implements OnNotification
* @param pos index to insert the new items
*/
private void load(long minId, long maxId, int pos) {
NotificationLoaderParam param = new NotificationLoaderParam(NotificationLoaderParam.LOAD_ALL, pos, minId, maxId);
Param param = new Param(Param.LOAD_ALL, pos, minId, maxId);
notificationLoader.execute(param, notificationLoaderCallback);
}
}

View File

@ -74,7 +74,7 @@ public class ScheduleFragment extends ListFragment implements OnScheduleClickLis
@Override
protected void onReload() {
load(adapter.getTopItemId(), 0L, CLEAR_LIST);
load(adapter.getTopItemId(), 0L, 0);
}

View File

@ -13,8 +13,6 @@ import androidx.annotation.Nullable;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.StatusLoader;
import org.nuclearfog.twidda.backend.async.StatusLoader.StatusParameter;
import org.nuclearfog.twidda.backend.async.StatusLoader.StatusResult;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.model.Status;
import org.nuclearfog.twidda.model.lists.Statuses;
@ -29,7 +27,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class StatusFragment extends ListFragment implements StatusSelectListener, AsyncCallback<StatusResult>, ActivityResultCallback<ActivityResult> {
public class StatusFragment extends ListFragment implements StatusSelectListener, AsyncCallback<StatusLoader.Result>, ActivityResultCallback<ActivityResult> {
/**
* Key to define what type of status should be loaded
@ -143,7 +141,7 @@ public class StatusFragment extends ListFragment implements StatusSelectListener
return;
}
}
load(StatusParameter.NO_ID, StatusParameter.NO_ID, StatusAdapter.CLEAR_LIST);
load(StatusLoader.Param.NO_ID, StatusLoader.Param.NO_ID, StatusAdapter.CLEAR_LIST);
setRefresh(true);
}
@ -188,14 +186,14 @@ public class StatusFragment extends ListFragment implements StatusSelectListener
protected void onReset() {
adapter.clear();
statusLoader = new StatusLoader(requireContext());
load(StatusParameter.NO_ID, StatusParameter.NO_ID, StatusAdapter.CLEAR_LIST);
load(StatusLoader.Param.NO_ID, StatusLoader.Param.NO_ID, StatusAdapter.CLEAR_LIST);
setRefresh(true);
}
@Override
protected void onReload() {
load(adapter.getTopItemId(), StatusParameter.NO_ID, 0);
load(adapter.getTopItemId(), StatusLoader.Param.NO_ID, 0);
}
@ -220,9 +218,9 @@ public class StatusFragment extends ListFragment implements StatusSelectListener
@Override
public void onResult(@NonNull StatusResult result) {
public void onResult(@NonNull StatusLoader.Result result) {
if (result.statuses != null) {
if (result.position == StatusResult.CLEAR) {
if (result.position == StatusLoader.Result.CLEAR) {
adapter.replaceItems(result.statuses);
} else {
adapter.addItems(result.statuses, result.position);
@ -244,41 +242,41 @@ public class StatusFragment extends ListFragment implements StatusSelectListener
* @param index index where status list should be added
*/
private void load(long sinceId, long maxId, int index) {
StatusParameter request;
StatusLoader.Param request;
switch (mode) {
case MODE_HOME:
request = new StatusParameter(StatusParameter.HOME, id, sinceId, maxId, index, search);
request = new StatusLoader.Param(StatusLoader.Param.HOME, id, sinceId, maxId, index, search);
break;
case MODE_USER:
request = new StatusParameter(StatusParameter.USER, id, sinceId, maxId, index, search);
request = new StatusLoader.Param(StatusLoader.Param.USER, id, sinceId, maxId, index, search);
break;
case MODE_FAVORIT:
request = new StatusParameter(StatusParameter.FAVORIT, id, sinceId, maxId, index, search);
request = new StatusLoader.Param(StatusLoader.Param.FAVORIT, id, sinceId, maxId, index, search);
break;
case MODE_REPLY:
if (index == StatusAdapter.CLEAR_LIST)
request = new StatusParameter(StatusParameter.REPLIES_LOCAL, id, sinceId, maxId, index, search);
request = new StatusLoader.Param(StatusLoader.Param.REPLIES_LOCAL, id, sinceId, maxId, index, search);
else
request = new StatusParameter(StatusParameter.REPLIES, id, sinceId, maxId, index, search);
request = new StatusLoader.Param(StatusLoader.Param.REPLIES, id, sinceId, maxId, index, search);
break;
case MODE_SEARCH:
request = new StatusParameter(StatusParameter.SEARCH, id, sinceId, maxId, index, search);
request = new StatusLoader.Param(StatusLoader.Param.SEARCH, id, sinceId, maxId, index, search);
break;
case MODE_USERLIST:
request = new StatusParameter(StatusParameter.USERLIST, id, sinceId, maxId, index, search);
request = new StatusLoader.Param(StatusLoader.Param.USERLIST, id, sinceId, maxId, index, search);
break;
case MODE_PUBLIC:
request = new StatusParameter(StatusParameter.PUBLIC, id, sinceId, maxId, index, search);
request = new StatusLoader.Param(StatusLoader.Param.PUBLIC, id, sinceId, maxId, index, search);
break;
case MODE_BOOKMARK:
request = new StatusLoader.StatusParameter(StatusParameter.BOOKMARKS, id, sinceId, maxId, index, search);
request = new StatusLoader.Param(StatusLoader.Param.BOOKMARKS, id, sinceId, maxId, index, search);
break;
default:

View File

@ -15,10 +15,7 @@ import androidx.annotation.Nullable;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.UserlistManager;
import org.nuclearfog.twidda.backend.async.UserlistManager.ListManagerResult;
import org.nuclearfog.twidda.backend.async.UsersLoader;
import org.nuclearfog.twidda.backend.async.UsersLoader.UserParam;
import org.nuclearfog.twidda.backend.async.UsersLoader.UserResult;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.model.User;
import org.nuclearfog.twidda.model.lists.Users;
@ -35,7 +32,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class UserFragment extends ListFragment implements UserClickListener, OnConfirmListener, AsyncCallback<UserResult>, ActivityResultCallback<ActivityResult> {
public class UserFragment extends ListFragment implements UserClickListener, OnConfirmListener, AsyncCallback<UsersLoader.Result>, ActivityResultCallback<ActivityResult> {
/**
* key to set the type of user list to show
@ -149,7 +146,7 @@ public class UserFragment extends ListFragment implements UserClickListener, OnC
private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this);
private AsyncCallback<ListManagerResult> userlistUpdate = this::updateUsers;
private AsyncCallback<UserlistManager.Result> userlistUpdate = this::updateUsers;
private ConfirmDialog confirmDialog;
private UsersLoader userLoader;
@ -187,7 +184,7 @@ public class UserFragment extends ListFragment implements UserClickListener, OnC
}
}
setRefresh(true);
load(UserParam.NO_CURSOR, UserAdapter.CLEAR_LIST);
load(UsersLoader.Param.NO_CURSOR, UserAdapter.CLEAR_LIST);
}
@ -223,14 +220,14 @@ public class UserFragment extends ListFragment implements UserClickListener, OnC
adapter.clear();
userLoader = new UsersLoader(requireContext());
userlistManager = new UserlistManager(requireContext());
load(UserParam.NO_CURSOR, UserAdapter.CLEAR_LIST);
load(UsersLoader.Param.NO_CURSOR, UserAdapter.CLEAR_LIST);
setRefresh(true);
}
@Override
protected void onReload() {
load(UserParam.NO_CURSOR, UserAdapter.CLEAR_LIST);
load(UsersLoader.Param.NO_CURSOR, UserAdapter.CLEAR_LIST);
}
@ -264,7 +261,7 @@ public class UserFragment extends ListFragment implements UserClickListener, OnC
@Override
public void onResult(@NonNull UserResult result) {
public void onResult(@NonNull UsersLoader.Result result) {
if (result.users != null) {
adapter.addItems(result.users, result.index);
} else {
@ -282,7 +279,7 @@ public class UserFragment extends ListFragment implements UserClickListener, OnC
// remove user from list
if (type == ConfirmDialog.LIST_REMOVE_USER) {
if (userlistManager.isIdle() && selectedUser != null) {
UserlistManager.ListManagerParam param = new UserlistManager.ListManagerParam(UserlistManager.ListManagerParam.REMOVE, id, selectedUser.getScreenname());
UserlistManager.Param param = new UserlistManager.Param(UserlistManager.Param.REMOVE, id, selectedUser.getScreenname());
userlistManager.execute(param, userlistUpdate);
}
}
@ -291,8 +288,8 @@ public class UserFragment extends ListFragment implements UserClickListener, OnC
/**
* callback for userlist changes
*/
private void updateUsers(ListManagerResult result) {
if (result.mode == ListManagerResult.DEL_USER) {
private void updateUsers(UserlistManager.Result result) {
if (result.mode == UserlistManager.Result.DEL_USER) {
if (selectedUser != null) {
String info = getString(R.string.info_user_removed, selectedUser.getScreenname());
Toast.makeText(requireContext(), info, Toast.LENGTH_SHORT).show();
@ -307,50 +304,50 @@ public class UserFragment extends ListFragment implements UserClickListener, OnC
* @param cursor cursor of the list
*/
private void load(long cursor, int index) {
UserParam param;
UsersLoader.Param param;
switch (mode) {
case MODE_FOLLOWER:
param = new UserParam(UserParam.FOLLOWS, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.FOLLOWS, index, id, cursor, search);
break;
case MODE_FOLLOWING:
param = new UserParam(UserParam.FRIENDS, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.FRIENDS, index, id, cursor, search);
break;
case MODE_REPOSTER:
param = new UserParam(UserParam.REPOST, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.REPOST, index, id, cursor, search);
break;
case MODE_FAVORITER:
param = new UserParam(UserParam.FAVORIT, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.FAVORIT, index, id, cursor, search);
break;
case MODE_SEARCH:
param = new UserParam(UserParam.SEARCH, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.SEARCH, index, id, cursor, search);
break;
case MODE_LIST_SUBSCRIBER:
param = new UserParam(UserParam.SUBSCRIBER, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.SUBSCRIBER, index, id, cursor, search);
break;
case MODE_LIST_MEMBER:
param = new UserParam(UserParam.LISTMEMBER, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.LISTMEMBER, index, id, cursor, search);
break;
case MODE_BLOCKS:
param = new UserParam(UserParam.BLOCK, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.BLOCK, index, id, cursor, search);
break;
case MODE_MUTES:
param = new UserParam(UserParam.MUTE, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.MUTE, index, id, cursor, search);
break;
case MODE_FOLLOW_OUTGOING:
param = new UserParam(UserParam.REQUEST_OUT, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.REQUEST_OUT, index, id, cursor, search);
break;
case MODE_FOLLOW_INCOMING:
param = new UserParam(UserParam.REQUEST_IN, index, id, cursor, search);
param = new UsersLoader.Param(UsersLoader.Param.REQUEST_IN, index, id, cursor, search);
break;
default:

View File

@ -13,8 +13,6 @@ import androidx.annotation.Nullable;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.UserlistLoader;
import org.nuclearfog.twidda.backend.async.UserlistLoader.UserlistParam;
import org.nuclearfog.twidda.backend.async.UserlistLoader.UserlistResult;
import org.nuclearfog.twidda.backend.utils.ErrorUtils;
import org.nuclearfog.twidda.model.User;
import org.nuclearfog.twidda.model.UserList;
@ -31,7 +29,7 @@ import java.io.Serializable;
*
* @author nuclearfog
*/
public class UserListFragment extends ListFragment implements ListClickListener, AsyncCallback<UserlistResult>, ActivityResultCallback<ActivityResult> {
public class UserListFragment extends ListFragment implements ListClickListener, AsyncCallback<UserlistLoader.Result>, ActivityResultCallback<ActivityResult> {
/**
* Key for the owner ID
@ -95,7 +93,7 @@ public class UserListFragment extends ListFragment implements ListClickListener,
}
}
setRefresh(true);
load(UserlistParam.NO_CURSOR, UserlistAdapter.CLEAR_LIST);
load(UserlistLoader.Param.NO_CURSOR, UserlistAdapter.CLEAR_LIST);
}
@ -115,7 +113,7 @@ public class UserListFragment extends ListFragment implements ListClickListener,
@Override
protected void onReload() {
load(UserlistParam.NO_CURSOR, UserlistAdapter.CLEAR_LIST);
load(UserlistLoader.Param.NO_CURSOR, UserlistAdapter.CLEAR_LIST);
}
@ -123,7 +121,7 @@ public class UserListFragment extends ListFragment implements ListClickListener,
protected void onReset() {
adapter.clear();
userlistLoader = new UserlistLoader(requireContext());
load(UserlistParam.NO_CURSOR, UserlistAdapter.CLEAR_LIST);
load(UserlistLoader.Param.NO_CURSOR, UserlistAdapter.CLEAR_LIST);
setRefresh(true);
}
@ -176,16 +174,16 @@ public class UserListFragment extends ListFragment implements ListClickListener,
@Override
public void onResult(@NonNull UserlistResult result) {
public void onResult(@NonNull UserlistLoader.Result result) {
switch (result.mode) {
case UserlistResult.MEMBERSHIP:
case UserlistResult.OWNERSHIP:
case UserlistLoader.Result.MEMBERSHIP:
case UserlistLoader.Result.OWNERSHIP:
if (result.userlists != null) {
adapter.addItems(result.userlists, result.index);
}
break;
case UserlistResult.ERROR:
case UserlistLoader.Result.ERROR:
if (getContext() != null) {
ErrorUtils.showErrorMessage(getContext(), result.exception);
}
@ -199,14 +197,14 @@ public class UserListFragment extends ListFragment implements ListClickListener,
* load content into the list
*/
private void load(long cursor, int index) {
UserlistParam param;
UserlistLoader.Param param;
switch (type) {
case MODE_OWNERSHIP:
param = new UserlistParam(UserlistParam.OWNERSHIP, index, id, cursor);
param = new UserlistLoader.Param(UserlistLoader.Param.OWNERSHIP, index, id, cursor);
break;
case MODE_MEMBERSHIP:
param = new UserlistParam(UserlistParam.MEMBERSHIP, index, id, cursor);
param = new UserlistLoader.Param(UserlistLoader.Param.MEMBERSHIP, index, id, cursor);
break;
default:

View File

@ -181,7 +181,6 @@
<string name="settings_icon_color">Symbolfarbe</string>
<string name="settings_key1_hint">Consumer Key</string>
<string name="settings_key2_hint">Consumer Secret</string>
<string name="error_acc_loading">Fehler beim Abrufen!</string>
<string name="info_location_pending">Ortung läuft, bitte warten.</string>
<string name="error_search">Suchbegriff ist entweder zu lang oder enthält nicht erlaubte Zeichen!</string>
<string name="button_share">Link teilen</string>
@ -359,4 +358,10 @@
<string name="dialog_description_title">Medienbeschreibung</string>
<string name="descr_remove_hashtag">Hashtag von der Liste entfernen</string>
<string name="confirm_hashtag_unfollow">Hashtag entfolgen?</string>
<string name="info_schedule_updated">geplanter Post aktualisiert</string>
<string name="info_schedule_removed">geplanter Post wurde entfernt</string>
<string name="menu_schedule">geplante Posts</string>
<string name="descr_remove_schedule">geplanten Post von der Liste entfernen</string>
<string name="confirm_schedule_remove">geplanten Post verwerfen?</string>
<string name="toolbar_schedule_title">geplante Posts</string>
</resources>

View File

@ -90,7 +90,6 @@
<string name="error_cant_reply_to_status">¡No puedes responder a este estado!</string>
<string name="error_corrupt_api_key">¡Error, clave de API corrupta!</string>
<string name="error_acc_update">¡Fallo al actualizar la cuenta! ¡Por favor, revisa lo que tecleaste!</string>
<string name="error_acc_loading">¡Error al cargar información de acceso!</string>
<string name="error_json_format">¡Errpr JSON!</string>
<string name="error_database_cleared">¡Error al limpiar la base de datos!</string>
<string name="error_result_cancelled">¡Error, se canceló el resultado!</string>

View File

@ -114,7 +114,6 @@
<string name="error_cant_reply_to_status">You can\'t reply to this status!</string>
<string name="error_corrupt_api_key">Error, corrupt API key!</string>
<string name="error_acc_update">Account update failed! Please check your input!</string>
<string name="error_acc_loading">Error while loading login information!</string>
<string name="error_json_format">JSON error!</string>
<string name="error_database_cleared">Error while clearing database!</string>
<string name="error_result_cancelled">Error, result cancelled!</string>