Search in sources :

Example 1 with CompletionInfo

use of com.nutomic.syncthingandroid.model.CompletionInfo in project syncthing-android by syncthing.

the class EventProcessor method onEvent.

/**
 * Performs the actual event handling.
 */
@Override
public void onEvent(Event event) {
    switch(event.type) {
        case "ConfigSaved":
            if (mApi != null) {
                Log.v(TAG, "Forwarding ConfigSaved event to RestApi to get the updated config.");
                mApi.reloadConfig();
            }
            break;
        case "PendingDevicesChanged":
            mapNullable((List<Map<String, String>>) event.data.get("added"), this::onPendingDevicesChanged);
            break;
        case "FolderCompletion":
            CompletionInfo completionInfo = new CompletionInfo();
            completionInfo.completion = (Double) event.data.get("completion");
            mApi.setCompletionInfo(// deviceId
            (String) event.data.get("device"), // folderId
            (String) event.data.get("folder"), completionInfo);
            break;
        case "PendingFoldersChanged":
            mapNullable((List<Map<String, String>>) event.data.get("added"), this::onPendingFoldersChanged);
            break;
        case "ItemFinished":
            String folder = (String) event.data.get("folder");
            String folderPath = null;
            for (Folder f : mApi.getFolders()) {
                if (f.id.equals(folder)) {
                    folderPath = f.path;
                }
            }
            File updatedFile = new File(folderPath, (String) event.data.get("item"));
            if (!"delete".equals(event.data.get("action"))) {
                Log.i(TAG, "Rescanned file via MediaScanner: " + updatedFile.toString());
                MediaScannerConnection.scanFile(mContext, new String[] { updatedFile.getPath() }, null, null);
            } else {
                // https://stackoverflow.com/a/29881556/1837158
                Log.i(TAG, "Deleted file from MediaStore: " + updatedFile.toString());
                Uri contentUri = MediaStore.Files.getContentUri("external");
                ContentResolver resolver = mContext.getContentResolver();
                resolver.delete(contentUri, MediaStore.Images.ImageColumns.DATA + " LIKE ?", new String[] { updatedFile.getPath() });
            }
            break;
        case "Ping":
            // Ignored.
            break;
        case "DeviceConnected":
        case "DeviceDisconnected":
        case "DeviceDiscovered":
        case "DownloadProgress":
        case "FolderPaused":
        case "FolderScanProgress":
        case "FolderSummary":
        case "ItemStarted":
        case "LocalIndexUpdated":
        case "LoginAttempt":
        case "RemoteDownloadProgress":
        case "RemoteIndexUpdated":
        case "Starting":
        case "StartupComplete":
        case "StateChanged":
            if (BuildConfig.DEBUG) {
                Log.v(TAG, "Ignored event " + event.type + ", data " + event.data);
            }
            break;
        default:
            Log.v(TAG, "Unhandled event " + event.type);
    }
}
Also used : CompletionInfo(com.nutomic.syncthingandroid.model.CompletionInfo) Folder(com.nutomic.syncthingandroid.model.Folder) Map(java.util.Map) File(java.io.File) Uri(android.net.Uri) ContentResolver(android.content.ContentResolver)

Aggregations

ContentResolver (android.content.ContentResolver)1 Uri (android.net.Uri)1 CompletionInfo (com.nutomic.syncthingandroid.model.CompletionInfo)1 Folder (com.nutomic.syncthingandroid.model.Folder)1 File (java.io.File)1 Map (java.util.Map)1