@Override
    protected void onPostExecute(Payload result) {
      super.onPostExecute(result);
      HashMap<String, Object> results = (HashMap<String, Object>) result.result;
      Deck deck = (Deck) results.get("deck");
      // Close the previously opened deck.
      if (deck != null) {
        deck.closeDeck();
      }
      SharedDeckDownload download = (SharedDeckDownload) result.data[0];
      SharedPreferences pref = PrefSettings.getSharedPrefs(getBaseContext());
      Editor editor = pref.edit();

      Log.i(AnkiDroidApp.TAG, "Finished deck " + download.getTitle() + " " + result.success);
      if (result.success) {
        // Put updated cards to 0
        // TODO: Why do we need to zero the updated cards?
        editor.putLong(
            "numUpdatedCards:" + mDestination + "/tmp/" + download.getTitle() + ".anki.updating",
            0);
        editor.commit();
        // Move deck and media to the default deck path
        new File(mDestination + "/tmp/" + download.getTitle() + ".anki.updating")
            .renameTo(new File(mDestination + "/" + download.getTitle() + ".anki"));
        new File(mDestination + "/tmp/" + download.getTitle() + ".media/")
            .renameTo(new File(mDestination + "/" + download.getTitle() + ".media/"));
        mSharedDeckDownloads.remove(download);
        showNotification(download.getTitle());
      } else {
        // If paused do nothing, if cancelled clean up
        if (download.getStatus() == Download.STATUS_CANCELLED) {
          try {
            new File(mDestination + "/tmp/" + download.getTitle() + ".anki.updating").delete();
            File mediaFolder = new File(mDestination + "/tmp/" + download.getTitle() + ".media/");
            if (mediaFolder != null && mediaFolder.listFiles() != null) {
              for (File f : mediaFolder.listFiles()) {
                f.delete();
              }
              mediaFolder.delete();
            }
          } catch (SecurityException e) {
            Log.e(AnkiDroidApp.TAG, "SecurityException = " + e.getMessage());
            e.printStackTrace();
          }
          editor.remove(
              "numUpdatedCards:" + mDestination + "/tmp/" + download.getTitle() + ".anki.updating");
          editor.remove(
              "paused:" + mDestination + "/tmp/" + download.getTitle() + ".anki.updating");
          editor.commit();
          mSharedDeckDownloads.remove(download);
        }
      }
      notifySharedDeckObservers();
      stopIfFinished();
    }