* initial native rewrite commit * update gitlab CI script * add printVersionName gradle task * fix Gitlab CI script * Fix first time wallet sync. add Discover dialog to Following page. * Finish Following and All Content views. Add customize your tags view. * Wallet sync get and set preferences, update interval. * Editor's Choice. Reposts. Some ontent page tweaks. * display no related content view when none loaded * Search cache. File view updates. Floating wallet balance. * Send tip dialog. Channel page share and follow/unfollow. * Handle lbry:// url scheme. Properly set URL bar values. SDK 0.71.0. * Channel follow/unfollow fixes. Display stream cost. * Channel management and channel creation / editing * phone number verification and rewards page * add Invites page * tweak player loading and playback when loading new claims * tweak about page layout * display text and markdown content * purchase_uri for free content * don't display invites history if none exist * fix channel list adapters * change launch mode from singleInstance to singleTask * url history and player fixes * Library page. URL and view history. * bumpversion 0.15.0 --> 0.15.1 * Make file view a fragment to prevent headaches with multiple Android task recents * Better handling of file view URLs. Some issue list fixes. * Abandon channels and bulk delete files tasks. Some visual tweaks. * bumpversion 0.15.1 --> 0.15.2 * fix some events * Some visual tweaks. Wunderbar clear focus hotfix for some devices. * sdk 0.74.0. Publish and Publishes pages. * Fix displayed amounts. Send Firebase token with install_new. * Some dark theme and crash fixes. Implement publish form. * Fix minor typo for string in 'generate_address_hint'. * Publish form and publish creation flow. UI tweaks and fixes. * Basic native mobile publishing * remove closeDatabase calls causing crashes * Implement file and channel page delete actions. UI action cleanup. * publish drivers for unresolved file page and featured search result item * show URL suggestions and data network (DHT) settings * Filter own claims from downloads. Fix address input. * fix edit channel crash * fix for possible blank / invalid video thumbnails * adjust minimum deposit. fix channel edit mode. * quick skip and playback speed media controls * change play and pause icons * Fix file size display. Tweak playback speed control. * Add exoplayer mediasession extension. Set player auto attributes. * Inline publish address validation error. Increase image upload request timeout. * fix no related content display * Claim new_android reward. Use canonical_url for share links. * force US locale for amount / bid values sent with sdk requests * Afrikaans and Spanish strings * Add media player error handling policy. Use : in share links. * don't proceed with publish if optimization is in progress.
100 lines
3.8 KiB
Java
100 lines
3.8 KiB
Java
package io.lbry.browser.tasks;
|
|
|
|
import android.os.AsyncTask;
|
|
import android.view.View;
|
|
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.File;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
import io.lbry.browser.exceptions.LbryResponseException;
|
|
import io.lbry.browser.utils.Helper;
|
|
import okhttp3.MediaType;
|
|
import okhttp3.MultipartBody;
|
|
import okhttp3.OkHttpClient;
|
|
import okhttp3.Request;
|
|
import okhttp3.RequestBody;
|
|
import okhttp3.Response;
|
|
|
|
public class UploadImageTask extends AsyncTask<Void, Void, String> {
|
|
private String filePath;
|
|
private View progressView;
|
|
private UploadThumbnailHandler handler;
|
|
private Exception error;
|
|
|
|
public UploadImageTask(String filePath, View progressView, UploadThumbnailHandler handler) {
|
|
this.filePath = filePath;
|
|
this.progressView = progressView;
|
|
this.handler = handler;
|
|
}
|
|
|
|
protected void onPreExecute() {
|
|
Helper.setViewVisibility(progressView, View.VISIBLE);
|
|
}
|
|
protected String doInBackground(Void... params) {
|
|
String thumbnailUrl = null;
|
|
try {
|
|
File file = new File(filePath);
|
|
String fileName = file.getName();
|
|
int dotIndex = fileName.lastIndexOf('.');
|
|
String extension = "jpg";
|
|
if (dotIndex > -1) {
|
|
extension = fileName.substring(dotIndex + 1);
|
|
}
|
|
String fileType = String.format("image/%s", extension);
|
|
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM).
|
|
addFormDataPart("name", Helper.makeid(24)).
|
|
addFormDataPart("file", fileName, RequestBody.create(file, MediaType.parse(fileType))).
|
|
build();
|
|
Request request = new Request.Builder().url("https://spee.ch/api/claim/publish").post(body).build();
|
|
OkHttpClient client = new OkHttpClient.Builder().
|
|
writeTimeout(300, TimeUnit.SECONDS).
|
|
readTimeout(300, TimeUnit.SECONDS).
|
|
build();
|
|
Response response = client.newCall(request).execute();
|
|
JSONObject json = new JSONObject(response.body().string());
|
|
if (json.has("success") && Helper.getJSONBoolean("success", false, json)) {
|
|
JSONObject data = json.getJSONObject("data");
|
|
String url = Helper.getJSONString("url", null, data);
|
|
if (Helper.isNullOrEmpty(url)) {
|
|
throw new LbryResponseException("Invalid thumbnail url returned after upload.");
|
|
}
|
|
|
|
thumbnailUrl = String.format("%s.%s", url, extension);
|
|
} else if (json.has("error") || json.has("message")) {
|
|
JSONObject error = Helper.getJSONObject("error", json);
|
|
String message = null;
|
|
if (error != null) {
|
|
message = Helper.getJSONString("message", null, error);
|
|
}
|
|
if (Helper.isNullOrEmpty(message)) {
|
|
message = Helper.getJSONString("message", null, json);
|
|
}
|
|
throw new LbryResponseException(Helper.isNullOrEmpty(message) ? "The image failed to upload." : message);
|
|
}
|
|
} catch (IOException | JSONException | LbryResponseException ex) {
|
|
error = ex;
|
|
}
|
|
|
|
return thumbnailUrl;
|
|
}
|
|
protected void onPostExecute(String thumbnailUrl) {
|
|
Helper.setViewVisibility(progressView, View.GONE);
|
|
if (handler != null) {
|
|
if (!Helper.isNullOrEmpty(thumbnailUrl)) {
|
|
handler.onSuccess(thumbnailUrl);
|
|
} else {
|
|
handler.onError(error);
|
|
}
|
|
}
|
|
}
|
|
|
|
public interface UploadThumbnailHandler {
|
|
void onSuccess(String url);
|
|
void onError(Exception error);
|
|
}
|
|
}
|