1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
//
// NCShareNetworking.swift
// Nextcloud
//
// Created by Marino Faggiana on 25/07/2019.
// Copyright © 2019 Marino Faggiana. All rights reserved.
//
// Author Marino Faggiana <marino.faggiana@nextcloud.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
import Foundation
class NCShareNetworking: NSObject {
private let appDelegate = UIApplication.shared.delegate as! AppDelegate
var account: String
var activeUrl: String
var delegate: NCShareNetworkingDelegate?
var view: UIView?
init(account: String, activeUrl: String, view: UIView?, delegate: NCShareNetworkingDelegate?) {
self.account = account
self.activeUrl = activeUrl
self.view = view
self.delegate = delegate
super.init()
}
func readShare() {
NCUtility.sharedInstance.startActivityIndicator(view: view, bottom: 0)
OCNetworking.sharedManager()?.readShare(withAccount: account, completion: { (account, items, message, errorCode) in
NCUtility.sharedInstance.stopActivityIndicator()
if errorCode == 0 {
let itemsOCSharedDto = items as! [OCSharedDto]
NCManageDatabase.sharedInstance.addShare(account: self.account, activeUrl: self.activeUrl, items: itemsOCSharedDto)
} else {
self.appDelegate.messageNotification("_share_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
}
self.delegate?.readShareCompleted(errorCode: errorCode)
})
}
func share(metadata: tableMetadata, password: String, permission: Int, hideDownload: Bool) {
NCUtility.sharedInstance.startActivityIndicator(view: view, bottom: 0)
let fileName = CCUtility.returnFileNamePath(fromFileName: metadata.fileName, serverUrl: metadata.serverUrl, activeUrl: activeUrl)!
OCNetworking.sharedManager()?.share(withAccount: metadata.account, fileName: fileName, password: password, permission: permission, hideDownload: hideDownload, completion: { (account, message, errorCode) in
if errorCode == 0 {
OCNetworking.sharedManager()?.readShare(withAccount: account, completion: { (account, items, message, errorCode) in
NCUtility.sharedInstance.stopActivityIndicator()
if errorCode == 0 {
let itemsOCSharedDto = items as! [OCSharedDto]
NCManageDatabase.sharedInstance.addShare(account: self.account, activeUrl: self.activeUrl, items: itemsOCSharedDto)
} else {
self.appDelegate.messageNotification("_share_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
}
self.delegate?.shareCompleted(errorCode: errorCode)
})
} else {
NCUtility.sharedInstance.stopActivityIndicator()
self.appDelegate.messageNotification("_share_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
}
})
}
func unShare(idRemoteShared: Int) {
NCUtility.sharedInstance.startActivityIndicator(view: view, bottom: 0)
OCNetworking.sharedManager()?.unshareAccount(account, shareID: idRemoteShared, completion: { (account, message, errorCode) in
NCUtility.sharedInstance.stopActivityIndicator()
if errorCode == 0 {
NCManageDatabase.sharedInstance.deleteTableShare(account: account!, idRemoteShared: idRemoteShared)
self.delegate?.unShareCompleted()
} else {
self.appDelegate.messageNotification("_share_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
}
})
}
func updateShare(idRemoteShared: Int, password: String?, permission: Int, note: String?, expirationTime: String?, hideDownload: Bool) {
NCUtility.sharedInstance.startActivityIndicator(view: view, bottom: 0)
OCNetworking.sharedManager()?.shareUpdateAccount(account, shareID: idRemoteShared, password: password, note:note, permission: permission, expirationTime: expirationTime, hideDownload: hideDownload, completion: { (account, message, errorCode) in
NCUtility.sharedInstance.stopActivityIndicator()
if errorCode == 0 {
self.readShare()
} else {
self.appDelegate.messageNotification("_share_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
self.delegate?.updateShareWithError(idRemoteShared: idRemoteShared)
}
})
}
}
protocol NCShareNetworkingDelegate {
func readShareCompleted(errorCode: Int)
func shareCompleted(errorCode: Int)
func unShareCompleted()
func updateShareWithError(idRemoteShared: Int)
}
|