Commit a441ce8f authored by sim's avatar sim
Browse files

Fix IllegalMonitorStateException

When we unlock a lock the thread don't Held
parent 57860793
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import java.net.IDN;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;

import app.fedilab.android.BaseMainActivity;
@@ -105,9 +106,9 @@ public class NotificationsHelper {

        new Thread(() -> {
            ReentrantLock lock = getLock(slug);
            try {
            // fetch if we get the lock, or ignore, another thread is doing the job
            if (lock.tryLock()) {
                try {
                    MastodonNotificationsService mastodonNotificationsService = init(context, slugArray[1]);
                    Notifications notifications = new Notifications();
                    Call<List<Notification>> notificationsCall;
@@ -135,19 +136,24 @@ public class NotificationsHelper {
                        Runnable myRunnable = () -> onRetrieveNotifications(context, notifications, accountDb, last_notif_id);
                        mainHandler.post(myRunnable);
                    }
                }

                } finally {
                    if (lock.isHeldByCurrentThread()) {
                        lock.unlock();
                    }
                }
            }
        }).start();
    }


    private static MastodonNotificationsService init(Context context, String instance) {

        final OkHttpClient okHttpClient = Helper.myOkHttpClient(context);
        final OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .readTimeout(60, TimeUnit.SECONDS)
                .connectTimeout(60, TimeUnit.SECONDS)
                .proxy(Helper.getProxy(context))
                .build();
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://" + (instance != null ? IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) : null) + "/api/v1/")
                .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))