Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–76 unchanged (76 lines)
77 }
78
79 Log_OC.d(TAG, "🕒 started for ${user.accountName} downloading ${folder.fileName}")
80
81 trySetForeground(folder)
82
83 folderDownloadEventBroadcaster.sendAdded(folder.fileId)
84 pendingDownloads.add(folder.fileId)
85
86 val downloadHelper = FileDownloadHelper.instance()
87
88 return withContext(Dispatchers.IO) {
89 try {
…lines 90–134 unchanged (45 lines)
135 Result.failure()
136 }
137 } catch (e: Exception) {
138 Log_OC.d(TAG, "❌ failed reason: $e")
139 Result.failure()
140 } finally {
141 folderDownloadEventBroadcaster.sendFinished(folder.fileId)
142 pendingDownloads.remove(folder.fileId)
143 notificationManager.dismiss()
144 }
145 }
146 }
147
…lines 148–203 unchanged (56 lines)

After

…lines 1–76 unchanged (76 lines)
77 }
78
79 Log_OC.d(TAG, "🕒 started for ${user.accountName} downloading ${folder.fileName}")
80
81 trySetForeground(folder)
82
83 folderDownloadEventBroadcaster.sendDownloadEnqueued(folder.fileId)
84 pendingDownloads.add(folder.fileId)
85
86 val downloadHelper = FileDownloadHelper.instance()
87
88 return withContext(Dispatchers.IO) {
89 try {
…lines 90–134 unchanged (45 lines)
135 Result.failure()
136 }
137 } catch (e: Exception) {
138 Log_OC.d(TAG, "❌ failed reason: $e")
139 Result.failure()
140 } finally {
141 folderDownloadEventBroadcaster.sendDownloadCompleted(folder.fileId)
142 pendingDownloads.remove(folder.fileId)
143 notificationManager.dismiss()
144 }
145 }
146 }
147
…lines 148–203 unchanged (56 lines)

Before

source_file
block_comment "/*\n * Nextcloud - Android Client\n *\n * SPDX-FileCopyrightTex"...
package_header
package "package"
qualified_identifier
identifier "com"
. "."
identifier "nextcloud"
. "."
identifier "client"
. "."
identifier "jobs"
. "."
identifier "folderDownload"
import
import "import"
qualified_identifier
identifier "android"
. "."
identifier "content"
. "."
identifier "Context"
import
import "import"
qualified_identifier
identifier "androidx"
. "."
identifier "localbroadcastmanager"
. "."
identifier "content"
. "."
identifier "LocalBroadcastManager"
import
import "import"
qualified_identifier
identifier "androidx"
. "."
identifier "work"
. "."
identifier "CoroutineWorker"
import
import "import"
qualified_identifier
identifier "androidx"
. "."
identifier "work"
. "."
identifier "ForegroundInfo"
import
import "import"
qualified_identifier
identifier "androidx"
. "."
identifier "work"
. "."
identifier "WorkerParameters"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "nextcloud"
. "."
identifier "client"
. "."
identifier "account"
. "."
identifier "UserAccountManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "nextcloud"
. "."
identifier "client"
. "."
identifier "jobs"
. "."
identifier "download"
. "."
identifier "FileDownloadHelper"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "datamodel"
. "."
identifier "FileDataStorageManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "datamodel"
. "."
identifier "OCFile"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "lib"
. "."
identifier "common"
. "."
identifier "OwnCloudClientManagerFactory"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "lib"
. "."
identifier "common"
. "."
identifier "utils"
. "."
identifier "Log_OC"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "operations"
. "."
identifier "DownloadFileOperation"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "operations"
. "."
identifier "DownloadType"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "ui"
. "."
identifier "helpers"
. "."
identifier "FileOperationsHelper"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "utils"
. "."
identifier "theme"
. "."
identifier "ViewThemeUtils"
import
import "import"
qualified_identifier
identifier "kotlinx"
. "."
identifier "coroutines"
. "."
identifier "Dispatchers"
import
import "import"
qualified_identifier
identifier "kotlinx"
. "."
identifier "coroutines"
. "."
identifier "withContext"
import
import "import"
qualified_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "concurrent"
. "."
identifier "ConcurrentHashMap"
class_declaration
modifiers
annotation
@ "@"
constructor_invocation
user_type
identifier "Suppress"
value_arguments
( "("
value_argument
string_literal
" "\""
string_content "LongMethod"
" "\""
, ","
value_argument
string_literal
" "\""
string_content "TooGenericExceptionCaught"
" "\""
) ")"
class "class"
identifier "FolderDownloadWorker"
primary_constructor (+41 nodes collapsed)
: ":"
delegation_specifiers
delegation_specifier
constructor_invocation
user_type
identifier "CoroutineWorker"
value_arguments
( "("
value_argument
identifier "context"
, ","
value_argument
identifier "params"
) ")"
class_body
{ "{"
companion_object (+107 nodes collapsed)
property_declaration
modifiers
visibility_modifier
private "private"
val "val"
variable_declaration
identifier "notificationManager"
= "="
call_expression
identifier "FolderDownloadWorkerNotificationManager"
value_arguments
( "("
value_argument
identifier "context"
, ","
value_argument
identifier "viewThemeUtils"
) ")"
property_declaration
modifiers
visibility_modifier
private "private"
val "val"
variable_declaration
identifier "folderDownloadEventBroadcaster"
= "="
call_expression
identifier "FolderDownloadEventBroadcaster"
value_arguments
( "("
value_argument
identifier "context"
, ","
value_argument
identifier "localBroadcastManager"
) ")"
property_declaration
modifiers
visibility_modifier
private "private"
member_modifier
lateinit "lateinit"
var "var"
variable_declaration
identifier "storageManager"
: ":"
user_type
identifier "FileDataStorageManager"
function_declaration
modifiers (+24 nodes collapsed)
fun "fun"
identifier "doWork"
function_value_parameters
( "("
) ")"
: ":"
user_type
identifier "Result"
function_body
block
{ "{"
property_declaration
val "val"
variable_declaration
identifier "folderID"
= "="
call_expression
navigation_expression
identifier "inputData"
. "."
identifier "getLong"
value_arguments
( "("
value_argument
identifier "FOLDER_ID"
, ","
value_argument
unary_expression
- "-"
number_literal "1"
) ")"
if_expression (+23 nodes collapsed)
property_declaration
val "val"
variable_declaration
identifier "accountName"
= "="
call_expression
navigation_expression
identifier "inputData"
. "."
identifier "getString"
value_arguments
( "("
value_argument
identifier "ACCOUNT_NAME"
) ")"
if_expression (+37 nodes collapsed)
property_declaration
val "val"
variable_declaration
identifier "optionalUser"
= "="
call_expression
navigation_expression
identifier "accountManager"
. "."
identifier "getUser"
value_arguments
( "("
value_argument
identifier "accountName"
) ")"
if_expression (+37 nodes collapsed)
property_declaration
val "val"
variable_declaration
identifier "user"
= "="
call_expression
navigation_expression
identifier "optionalUser"
. "."
identifier "get"
value_arguments
( "("
) ")"
assignment
identifier "storageManager"
= "="
call_expression
identifier "FileDataStorageManager"
value_arguments
( "("
value_argument
identifier "user"
, ","
value_argument
navigation_expression
identifier "context"
. "."
identifier "contentResolver"
) ")"
property_declaration
val "val"
variable_declaration
identifier "folder"
= "="
call_expression
navigation_expression
identifier "storageManager"
. "."
identifier "getFileById"
value_arguments
( "("
value_argument
identifier "folderID"
) ")"
if_expression (+37 nodes collapsed)
call_expression (+31 nodes collapsed)
call_expression
identifier "trySetForeground"
value_arguments
( "("
value_argument
identifier "folder"
) ")"
call_expression
navigation_expression
identifier "folderDownloadEventBroadcaster"
. "."
identifier "sendAdded"
value_arguments
( "("
value_argument
navigation_expression
identifier "folder"
. "."
identifier "fileId"
) ")"
call_expression
navigation_expression
identifier "pendingDownloads"
. "."
identifier "add"
value_arguments
( "("
value_argument
navigation_expression
identifier "folder"
. "."
identifier "fileId"
) ")"
property_declaration
val "val"
variable_declaration
identifier "downloadHelper"
= "="
call_expression
navigation_expression
identifier "FileDownloadHelper"
. "."
identifier "instance"
value_arguments
( "("
) ")"
return_expression
return "return"
call_expression
call_expression
identifier "withContext"
value_arguments
( "("
value_argument
navigation_expression
identifier "Dispatchers"
. "."
identifier "IO"
) ")"
annotated_lambda
lambda_literal
{ "{"
try_expression
try "try"
block (+387 nodes collapsed)
catch_block (+37 nodes collapsed)
finally_block
finally "finally"
block
{ "{"
call_expression
navigation_expression
identifier "folderDownloadEventBroadcaster"
. "."
identifier "sendFinished"
value_arguments
( "("
value_argument
navigation_expression
identifier "folder"
. "."
identifier "fileId"
) ")"
call_expression
navigation_expression
identifier "pendingDownloads"
. "."
identifier "remove"
value_arguments
( "("
value_argument
navigation_expression
identifier "folder"
. "."
identifier "fileId"
) ")"
call_expression
navigation_expression
identifier "notificationManager"
. "."
identifier "dismiss"
value_arguments
( "("
) ")"
} "}"
} "}"
} "}"
function_declaration (+199 nodes collapsed)
function_declaration (+81 nodes collapsed)
function_declaration (+111 nodes collapsed)
function_declaration (+66 nodes collapsed)
function_declaration (+70 nodes collapsed)
} "}"

After

source_file
block_comment "/*\n * Nextcloud - Android Client\n *\n * SPDX-FileCopyrightTex"...
package_header
package "package"
qualified_identifier
identifier "com"
. "."
identifier "nextcloud"
. "."
identifier "client"
. "."
identifier "jobs"
. "."
identifier "folderDownload"
import
import "import"
qualified_identifier
identifier "android"
. "."
identifier "content"
. "."
identifier "Context"
import
import "import"
qualified_identifier
identifier "androidx"
. "."
identifier "localbroadcastmanager"
. "."
identifier "content"
. "."
identifier "LocalBroadcastManager"
import
import "import"
qualified_identifier
identifier "androidx"
. "."
identifier "work"
. "."
identifier "CoroutineWorker"
import
import "import"
qualified_identifier
identifier "androidx"
. "."
identifier "work"
. "."
identifier "ForegroundInfo"
import
import "import"
qualified_identifier
identifier "androidx"
. "."
identifier "work"
. "."
identifier "WorkerParameters"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "nextcloud"
. "."
identifier "client"
. "."
identifier "account"
. "."
identifier "UserAccountManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "nextcloud"
. "."
identifier "client"
. "."
identifier "jobs"
. "."
identifier "download"
. "."
identifier "FileDownloadHelper"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "datamodel"
. "."
identifier "FileDataStorageManager"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "datamodel"
. "."
identifier "OCFile"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "lib"
. "."
identifier "common"
. "."
identifier "OwnCloudClientManagerFactory"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "lib"
. "."
identifier "common"
. "."
identifier "utils"
. "."
identifier "Log_OC"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "operations"
. "."
identifier "DownloadFileOperation"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "operations"
. "."
identifier "DownloadType"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "ui"
. "."
identifier "helpers"
. "."
identifier "FileOperationsHelper"
import
import "import"
qualified_identifier
identifier "com"
. "."
identifier "owncloud"
. "."
identifier "android"
. "."
identifier "utils"
. "."
identifier "theme"
. "."
identifier "ViewThemeUtils"
import
import "import"
qualified_identifier
identifier "kotlinx"
. "."
identifier "coroutines"
. "."
identifier "Dispatchers"
import
import "import"
qualified_identifier
identifier "kotlinx"
. "."
identifier "coroutines"
. "."
identifier "withContext"
import
import "import"
qualified_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "concurrent"
. "."
identifier "ConcurrentHashMap"
class_declaration
modifiers
annotation
@ "@"
constructor_invocation
user_type
identifier "Suppress"
value_arguments
( "("
value_argument
string_literal
" "\""
string_content "LongMethod"
" "\""
, ","
value_argument
string_literal
" "\""
string_content "TooGenericExceptionCaught"
" "\""
) ")"
class "class"
identifier "FolderDownloadWorker"
primary_constructor (+41 nodes collapsed)
: ":"
delegation_specifiers
delegation_specifier
constructor_invocation
user_type
identifier "CoroutineWorker"
value_arguments
( "("
value_argument
identifier "context"
, ","
value_argument
identifier "params"
) ")"
class_body
{ "{"
companion_object (+107 nodes collapsed)
property_declaration
modifiers
visibility_modifier
private "private"
val "val"
variable_declaration
identifier "notificationManager"
= "="
call_expression
identifier "FolderDownloadWorkerNotificationManager"
value_arguments
( "("
value_argument
identifier "context"
, ","
value_argument
identifier "viewThemeUtils"
) ")"
property_declaration
modifiers
visibility_modifier
private "private"
val "val"
variable_declaration
identifier "folderDownloadEventBroadcaster"
= "="
call_expression
identifier "FolderDownloadEventBroadcaster"
value_arguments
( "("
value_argument
identifier "context"
, ","
value_argument
identifier "localBroadcastManager"
) ")"
property_declaration
modifiers
visibility_modifier
private "private"
member_modifier
lateinit "lateinit"
var "var"
variable_declaration
identifier "storageManager"
: ":"
user_type
identifier "FileDataStorageManager"
function_declaration
modifiers (+24 nodes collapsed)
fun "fun"
identifier "doWork"
function_value_parameters
( "("
) ")"
: ":"
user_type
identifier "Result"
function_body
block
{ "{"
property_declaration
val "val"
variable_declaration
identifier "folderID"
= "="
call_expression
navigation_expression
identifier "inputData"
. "."
identifier "getLong"
value_arguments
( "("
value_argument
identifier "FOLDER_ID"
, ","
value_argument
unary_expression
- "-"
number_literal "1"
) ")"
if_expression (+23 nodes collapsed)
property_declaration
val "val"
variable_declaration
identifier "accountName"
= "="
call_expression
navigation_expression
identifier "inputData"
. "."
identifier "getString"
value_arguments
( "("
value_argument
identifier "ACCOUNT_NAME"
) ")"
if_expression (+37 nodes collapsed)
property_declaration
val "val"
variable_declaration
identifier "optionalUser"
= "="
call_expression
navigation_expression
identifier "accountManager"
. "."
identifier "getUser"
value_arguments
( "("
value_argument
identifier "accountName"
) ")"
if_expression (+37 nodes collapsed)
property_declaration
val "val"
variable_declaration
identifier "user"
= "="
call_expression
navigation_expression
identifier "optionalUser"
. "."
identifier "get"
value_arguments
( "("
) ")"
assignment
identifier "storageManager"
= "="
call_expression
identifier "FileDataStorageManager"
value_arguments
( "("
value_argument
identifier "user"
, ","
value_argument
navigation_expression
identifier "context"
. "."
identifier "contentResolver"
) ")"
property_declaration
val "val"
variable_declaration
identifier "folder"
= "="
call_expression
navigation_expression
identifier "storageManager"
. "."
identifier "getFileById"
value_arguments
( "("
value_argument
identifier "folderID"
) ")"
if_expression (+37 nodes collapsed)
call_expression (+31 nodes collapsed)
call_expression
identifier "trySetForeground"
value_arguments
( "("
value_argument
identifier "folder"
) ")"
call_expression
navigation_expression
identifier "folderDownloadEventBroadcaster"
. "."
identifier "sendDownloadEnqueued"
value_arguments
( "("
value_argument
navigation_expression
identifier "folder"
. "."
identifier "fileId"
) ")"
call_expression
navigation_expression
identifier "pendingDownloads"
. "."
identifier "add"
value_arguments
( "("
value_argument
navigation_expression
identifier "folder"
. "."
identifier "fileId"
) ")"
property_declaration
val "val"
variable_declaration
identifier "downloadHelper"
= "="
call_expression
navigation_expression
identifier "FileDownloadHelper"
. "."
identifier "instance"
value_arguments
( "("
) ")"
return_expression
return "return"
call_expression
call_expression
identifier "withContext"
value_arguments
( "("
value_argument
navigation_expression
identifier "Dispatchers"
. "."
identifier "IO"
) ")"
annotated_lambda
lambda_literal
{ "{"
try_expression
try "try"
block (+387 nodes collapsed)
catch_block (+37 nodes collapsed)
finally_block
finally "finally"
block
{ "{"
call_expression
navigation_expression
identifier "folderDownloadEventBroadcaster"
. "."
identifier "sendDownloadCompleted"
value_arguments
( "("
value_argument
navigation_expression
identifier "folder"
. "."
identifier "fileId"
) ")"
call_expression
navigation_expression
identifier "pendingDownloads"
. "."
identifier "remove"
value_arguments
( "("
value_argument
navigation_expression
identifier "folder"
. "."
identifier "fileId"
) ")"
call_expression
navigation_expression
identifier "notificationManager"
. "."
identifier "dismiss"
value_arguments
( "("
) ")"
} "}"
} "}"
} "}"
function_declaration (+199 nodes collapsed)
function_declaration (+81 nodes collapsed)
function_declaration (+111 nodes collapsed)
function_declaration (+66 nodes collapsed)
function_declaration (+70 nodes collapsed)
} "}"