Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5002b826 authored by Danny Baumann's avatar Danny Baumann
Browse files

If there's a contacts DB change while the dialpad is open, reload the

cache instead of dropping it.

Fixes issue #6679.

Change-Id: I55dc6653a175db5268bd868ee5b7dc6d75a1f1d4
parent ebe36b5a
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -149,8 +149,14 @@ public class T9SearchCache implements ComponentCallbacks2 {
    private ContentObserver mContactObserver = new ContentObserver(new Handler()) {
        @Override
        public void onChange(boolean selfChange) {
            if (mCallbacks.isEmpty()) {
                /* we have no listeners, just invalidate cache */
                mLoaded = false;
                cancelLoad();
            } else {
                /* transparently reload cache */
                triggerLoad();
            }
        }
    };

@@ -178,16 +184,11 @@ public class T9SearchCache implements ComponentCallbacks2 {
    }

    public void refresh(Callback cb) {
        mCallbacks.add(cb);
        if (mLoaded) {
            cb.onLoadFinished();
            return;
        }

        mCallbacks.add(cb);

        if (mLoadTask == null || mLoadTask.getStatus() == AsyncTask.Status.FINISHED) {
            mLoadTask = new LoadTask();
            mLoadTask.execute();
        } else {
            triggerLoad();
        }
    }

@@ -198,6 +199,13 @@ public class T9SearchCache implements ComponentCallbacks2 {
        }
    }

    private void triggerLoad() {
        if (mLoadTask == null || mLoadTask.getStatus() == AsyncTask.Status.FINISHED) {
            mLoadTask = new LoadTask();
            mLoadTask.execute();
        }
    }

    private void cancelLoad() {
        if (mLoadTask != null) {
            mLoadTask.cancel(true);