unified intern Async classes, schedule viewer fix, code cleanup
This commit is contained in:
parent
ae5e367434
commit
f9395ff05a
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue