summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2023-07-27 14:46:05 +0200
committerThomas <tschneider.ac@gmail.com>2023-07-27 14:46:05 +0200
commit44752cc329c46a62fdde1c1f2c294fb27baa42a8 (patch)
treecb7ea44496cc0692a9a8116fddb7bace6b225a02
parent28501e792932477232987da194734d426ce6f0f4 (diff)
Fix Punycode not supported for domains
-rw-r--r--app/src/main/java/app/fedilab/android/BaseMainActivity.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/client/entities/nitter/Nitter.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/CrossActionHelper.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/PushNotifications.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/TimelineHelper.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/jobs/ComposeWorker.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/jobs/ScheduleBoostWorker.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AdminVM.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AnnouncementsVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AppsVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/FiltersVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/InstancesVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/NodeInfoVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/NotificationsVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/OauthVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/OembedVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/SearchVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/StatusesVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TagVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TimelinesVM.java7
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/viewmodel/pleroma/ActionsVM.java3
-rw-r--r--app/src/main/java/app/fedilab/android/peertube/client/RetrofitPeertubeAPI.java3
25 files changed, 54 insertions, 29 deletions
diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
index 2483855d2..025814b15 100644
--- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java
+++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
@@ -110,6 +110,7 @@ import org.jsoup.nodes.Element;
import java.io.File;
import java.io.IOException;
import java.lang.ref.WeakReference;
+import java.net.IDN;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -1113,7 +1114,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
.proxy(Helper.getProxy(getApplication().getApplicationContext()))
.build();
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + MainActivity.currentInstance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(MainActivity.currentInstance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/nitter/Nitter.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/nitter/Nitter.java
index b9455c649..fbc78ad70 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/nitter/Nitter.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/nitter/Nitter.java
@@ -25,6 +25,7 @@ import org.simpleframework.xml.Path;
import org.simpleframework.xml.Root;
import java.io.Serializable;
+import java.net.IDN;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -68,7 +69,7 @@ public class Nitter implements Serializable {
.proxy(Helper.getProxy(context))
.build();
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance)
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED))
.addConverterFactory(SimpleXmlConverterFactory.create())
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/CrossActionHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/CrossActionHelper.java
index c56335120..949d0ccb1 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/helper/CrossActionHelper.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/helper/CrossActionHelper.java
@@ -31,6 +31,7 @@ import androidx.preference.PreferenceManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.io.IOException;
+import java.net.IDN;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -265,7 +266,7 @@ public class CrossActionHelper {
.proxy(Helper.getProxy(context))
.build();
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v2/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v2/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java
index da3ad43ff..9855c663d 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java
@@ -37,6 +37,7 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
+import java.net.IDN;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -142,7 +143,7 @@ public class NotificationsHelper {
.proxy(Helper.getProxy(context))
.build();
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/PushNotifications.java b/app/src/main/java/app/fedilab/android/mastodon/helper/PushNotifications.java
index c08551747..a9902ce5d 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/helper/PushNotifications.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/helper/PushNotifications.java
@@ -23,6 +23,7 @@ import android.os.Looper;
import androidx.annotation.NonNull;
import androidx.preference.PreferenceManager;
+import java.net.IDN;
import java.util.concurrent.TimeUnit;
import app.fedilab.android.R;
@@ -137,7 +138,7 @@ public class PushNotifications {
.proxy(Helper.getProxy(context.getApplicationContext()))
.build();
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/TimelineHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/TimelineHelper.java
index e7e03ae18..ce335726b 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/helper/TimelineHelper.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/helper/TimelineHelper.java
@@ -29,6 +29,7 @@ import androidx.lifecycle.ViewModelStoreOwner;
import androidx.preference.PreferenceManager;
import java.io.IOException;
+import java.net.IDN;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -61,7 +62,7 @@ public class TimelineHelper {
.proxy(Helper.getProxy(context))
.build();
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + BaseMainActivity.currentInstance + "/api/v2/")
+ .baseUrl("https://" + IDN.toASCII(BaseMainActivity.currentInstance, IDN.ALLOW_UNASSIGNED) + "/api/v2/")
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/jobs/ComposeWorker.java b/app/src/main/java/app/fedilab/android/mastodon/jobs/ComposeWorker.java
index 6e6633740..d07a31e0e 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/jobs/ComposeWorker.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/jobs/ComposeWorker.java
@@ -44,6 +44,7 @@ import com.google.common.util.concurrent.ListenableFuture;
import com.google.gson.Gson;
import java.io.IOException;
+import java.net.IDN;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -98,7 +99,7 @@ public class ComposeWorker extends Worker {
private static MastodonStatusesService init(Context context, @NonNull String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(getOkHttpClient(context))
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java b/app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java
index adc032ffb..76e13a597 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/jobs/FetchHomeWorker.java
@@ -37,6 +37,7 @@ import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import java.io.IOException;
+import java.net.IDN;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -251,7 +252,7 @@ public class FetchHomeWorker extends Worker {
private MastodonTimelinesService init(String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/jobs/ScheduleBoostWorker.java b/app/src/main/java/app/fedilab/android/mastodon/jobs/ScheduleBoostWorker.java
index 19462a7c0..3d36df42f 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/jobs/ScheduleBoostWorker.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/jobs/ScheduleBoostWorker.java
@@ -32,6 +32,7 @@ import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import java.io.IOException;
+import java.net.IDN;
import java.util.concurrent.TimeUnit;
import app.fedilab.android.R;
@@ -110,7 +111,7 @@ public class ScheduleBoostWorker extends Worker {
private MastodonStatusesService init(@NonNull String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create())
.client(getOkHttpClient())
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java
index 86b86c203..a018695aa 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java
@@ -24,6 +24,7 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import java.net.IDN;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -105,7 +106,7 @@ public class AccountsVM extends AndroidViewModel {
private MastodonAccountsService init(String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
@@ -114,7 +115,7 @@ public class AccountsVM extends AndroidViewModel {
private MastodonAccountsService initv2(String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v2/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v2/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AdminVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AdminVM.java
index 5db5eed12..f0a705d02 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AdminVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AdminVM.java
@@ -23,6 +23,7 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import java.net.IDN;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -64,7 +65,7 @@ public class AdminVM extends AndroidViewModel {
private MastodonAdminService init(@NonNull String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
@@ -73,7 +74,7 @@ public class AdminVM extends AndroidViewModel {
private MastodonAdminService initv2(@NonNull String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v2/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v2/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AnnouncementsVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AnnouncementsVM.java
index 3412b3c7a..3287499ad 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AnnouncementsVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AnnouncementsVM.java
@@ -23,6 +23,7 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import java.net.IDN;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -52,7 +53,7 @@ public class AnnouncementsVM extends AndroidViewModel {
private MastodonAnnouncementsService init(@NonNull String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AppsVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AppsVM.java
index 9fc4ba2a3..9ef5f65f7 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AppsVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AppsVM.java
@@ -26,6 +26,7 @@ import androidx.lifecycle.MutableLiveData;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
+import java.net.IDN;
import java.util.concurrent.TimeUnit;
import app.fedilab.android.mastodon.client.endpoints.MastodonAppsService;
@@ -60,7 +61,7 @@ public class AppsVM extends AndroidViewModel {
private MastodonAppsService init(String instance) throws IllegalArgumentException {
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/FiltersVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/FiltersVM.java
index f69ae079b..edb8cf036 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/FiltersVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/FiltersVM.java
@@ -24,6 +24,7 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import java.net.IDN;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -57,7 +58,7 @@ public class FiltersVM extends AndroidViewModel {
private MastodonFiltersService initV2(String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v2/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v2/")
// .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/InstancesVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/InstancesVM.java
index 894fa6164..1843df80c 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/InstancesVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/InstancesVM.java
@@ -26,6 +26,7 @@ import androidx.lifecycle.MutableLiveData;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
+import java.net.IDN;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -63,7 +64,7 @@ public class InstancesVM extends AndroidViewModel {
private MastodonInstanceService init(@NonNull String instance) {
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/NodeInfoVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/NodeInfoVM.java
index 06a219ad3..f2a77a708 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/NodeInfoVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/NodeInfoVM.java
@@ -24,6 +24,7 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import java.net.IDN;
import java.util.concurrent.TimeUnit;
import app.fedilab.android.mastodon.client.NodeInfoService;
@@ -52,7 +53,7 @@ public class NodeInfoVM extends AndroidViewModel {
private NodeInfoService init(String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/")
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/NotificationsVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/NotificationsVM.java
index 0887c4518..5fb42ffdb 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/NotificationsVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/NotificationsVM.java
@@ -23,6 +23,7 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import java.net.IDN;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -94,7 +95,7 @@ public class NotificationsVM extends AndroidViewModel {
private MastodonNotificationsService init(@NonNull String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/OauthVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/OauthVM.java
index 7ecdb407b..c8c985b1b 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/OauthVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/OauthVM.java
@@ -26,6 +26,7 @@ import androidx.lifecycle.MutableLiveData;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
+import java.net.IDN;
import java.util.concurrent.TimeUnit;
import app.fedilab.android.mastodon.client.endpoints.MastodonAppsService;
@@ -61,7 +62,7 @@ public class OauthVM extends AndroidViewModel {
private MastodonAppsService init(@NonNull String instance) {
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/OembedVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/OembedVM.java
index 2200fc00e..173a48a54 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/OembedVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/OembedVM.java
@@ -19,6 +19,7 @@ import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
+import java.net.IDN;
import java.util.concurrent.TimeUnit;
import app.fedilab.android.mastodon.client.endpoints.MastodonOembedService;
@@ -42,7 +43,7 @@ public class OembedVM extends AndroidViewModel {
private MastodonOembedService init(@NonNull String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/SearchVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/SearchVM.java
index 47a291db1..491fd0ae9 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/SearchVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/SearchVM.java
@@ -26,6 +26,7 @@ import androidx.lifecycle.MutableLiveData;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
+import java.net.IDN;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -59,7 +60,7 @@ public class SearchVM extends AndroidViewModel {
private MastodonSearchService init(@NonNull String instance) {
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v2/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v2/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/StatusesVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/StatusesVM.java
index 48b953b41..b601c47ed 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/StatusesVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/StatusesVM.java
@@ -25,6 +25,7 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import java.net.IDN;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -92,7 +93,7 @@ public class StatusesVM extends AndroidViewModel {
private MastodonStatusesService init(@NonNull String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(getOkHttpClient())
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TagVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TagVM.java
index 75f1763e8..e6779dbc0 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TagVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TagVM.java
@@ -23,6 +23,7 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import java.net.IDN;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -63,7 +64,7 @@ public class TagVM extends AndroidViewModel {
private MastodonTagService init(String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance + "/api/v1/")
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) + "/api/v1/")
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TimelinesVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TimelinesVM.java
index afef54bb8..8eab91594 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TimelinesVM.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/TimelinesVM.java
@@ -31,6 +31,7 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.preference.PreferenceManager;
+import java.net.IDN;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -157,7 +158,7 @@ public class TimelinesVM extends AndroidViewModel {
private MastodonTimelinesService initInstanceOnly(String instance) {
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://" + instance)
+ .baseUrl("https://" + IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED))
.addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
.client(okHttpClient)
.build();
@@ -166,7 +167,7 @@ public class TimelinesVM extends AndroidViewModel {
private MastodonTimelinesService initInstanceXMLOnly(String instance) {
Retrofit retrofit = new Retrofit.Builder()