Fix #1163 - Posting messages does not work on some Friendica instances

This commit is contained in:
Thomas 2025-04-07 16:06:32 +02:00
parent 59c05e35fd
commit c2683995a1
2 changed files with 17 additions and 12 deletions

View file

@ -2139,6 +2139,22 @@ public class Helper {
.build(); .build();
} }
public static OkHttpClient myPostOkHttpClient(Context context) {
return new OkHttpClient.Builder()
.addInterceptor(chain -> {
Request originalRequest = chain.request();
Request requestWithUserAgent = originalRequest.newBuilder()
.header("User-Agent", context.getString(R.string.app_name) + "/" + BuildConfig.VERSION_NAME + "/" + BuildConfig.VERSION_CODE)
.build();
return chain.proceed(requestWithUserAgent);
})
.readTimeout(120, TimeUnit.SECONDS)
.connectTimeout(120, TimeUnit.SECONDS)
.callTimeout(120, TimeUnit.SECONDS)
.proxy(Helper.getProxy(context))
.build();
}
public static String parseHtml(String html) { public static String parseHtml(String html) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY).toString(); return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY).toString();

View file

@ -47,9 +47,7 @@ import com.google.gson.Gson;
import java.io.IOException; import java.io.IOException;
import java.net.IDN; import java.net.IDN;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import app.fedilab.android.BaseMainActivity; import app.fedilab.android.BaseMainActivity;
@ -72,7 +70,6 @@ import app.fedilab.android.mastodon.helper.Helper;
import app.fedilab.android.mastodon.ui.drawer.StatusAdapter; import app.fedilab.android.mastodon.ui.drawer.StatusAdapter;
import okhttp3.MediaType; import okhttp3.MediaType;
import okhttp3.MultipartBody; import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Response; import retrofit2.Response;
@ -94,19 +91,11 @@ public class ComposeWorker extends Worker {
context.getSystemService(NOTIFICATION_SERVICE); context.getSystemService(NOTIFICATION_SERVICE);
} }
private static OkHttpClient getOkHttpClient(Context context) {
return new OkHttpClient.Builder()
.readTimeout(120, TimeUnit.SECONDS)
.connectTimeout(120, TimeUnit.SECONDS)
.proxy(Helper.getProxy(context.getApplicationContext()))
.build();
}
private static MastodonStatusesService init(Context context, String instance) { private static MastodonStatusesService init(Context context, String instance) {
Retrofit retrofit = new Retrofit.Builder() Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://" + (instance != null ? IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) : null) + "/api/v1/") .baseUrl("https://" + (instance != null ? IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) : null) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder())) .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(getOkHttpClient(context)) .client(Helper.myPostOkHttpClient(context))
.build(); .build();
return retrofit.create(MastodonStatusesService.class); return retrofit.create(MastodonStatusesService.class);
} }