Improvements change/add account

This commit is contained in:
Marino Faggiana 2018-01-30 11:08:51 +01:00 коммит произвёл Marino Faggiana
Родитель e5a305b9a8
Коммит 4c15d97ec0
5 изменённых файлов: 93 добавлений и 85 удалений

Просмотреть файл

@ -122,7 +122,6 @@ extern NSString *const flowEndpoint;
#define k_taskIdentifierNULL 99999
// TaskStatus
#define k_taskStatusNone 0
#define k_taskStatusCancel -1
#define k_taskStatusResume -2
#define k_taskStatusSuspend -3

Просмотреть файл

@ -3064,17 +3064,6 @@
if ([NCBrandOptions sharedInstance].disable_multiaccount)
return;
/*
NSUInteger numInSession = [[[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND session != ''", appDelegate.activeAccount] sorted:nil ascending:NO] count];
NSUInteger numInQueue = [appDelegate.netQueue operationCount];
if (numInSession+numInQueue > 0) {
[JDStatusBarNotification showWithStatus:NSLocalizedString(@"_transfers_in_queue_", nil) dismissAfter:k_dismissAfterSecond styleName:JDStatusBarStyleDefault];
return;
}
*/
NSArray *listAccount = [[NCManageDatabase sharedInstance] getAccounts];
NSMutableArray *menuArray = [NSMutableArray new];
@ -3167,29 +3156,40 @@
- (void)changeDefaultAccount:(CCMenuItem *)sender
{
[_ImageTitleHomeCryptoCloud setUserInteractionEnabled:NO];
// Verify session in progress
if ([[[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND sessionTaskIdentifier > 0", appDelegate.activeAccount] sorted:nil ascending:NO] count] > 0) {
[JDStatusBarNotification showWithStatus:NSLocalizedString(@"_transfers_in_queue_", nil) dismissAfter:k_dismissAfterSecond styleName:JDStatusBarStyleDefault];
return;
}
[appDelegate.netQueue cancelAllOperations];
[[CCNetworking sharedNetworking] settingSessionsDownload:YES upload:YES taskStatus:k_taskStatusCancel activeAccount:appDelegate.activeAccount activeUser:appDelegate.activeUser activeUrl:appDelegate.activeUrl];
tableAccount *tableAccount = [[NCManageDatabase sharedInstance] setAccountActive:[sender argument]];
if (tableAccount) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
tableAccount *tableAccount = [[NCManageDatabase sharedInstance] setAccountActive:[sender argument]];
if (tableAccount) {
[appDelegate settingActiveAccount:tableAccount.account activeUrl:tableAccount.url activeUser:tableAccount.user activeUserID:tableAccount.userID activePassword:tableAccount.password];
[appDelegate settingActiveAccount:tableAccount.account activeUrl:tableAccount.url activeUser:tableAccount.user activeUserID:tableAccount.userID activePassword:tableAccount.password];
// go to home sweet home
[[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:@"initializeMain" object:nil];
[_ImageTitleHomeCryptoCloud setUserInteractionEnabled:YES];
}
// go to home sweet home
[[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:@"initializeMain" object:nil];
}
});
}
- (void)addNewAccount:(CCMenuItem *)sender
{
[appDelegate.netQueue cancelAllOperations];
[[CCNetworking sharedNetworking] settingSessionsDownload:YES upload:YES taskStatus:k_taskStatusCancel activeAccount:appDelegate.activeAccount activeUser:appDelegate.activeUser activeUrl:appDelegate.activeUrl];
// Verify session in progress
if ([[[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND sessionTaskIdentifier > 0", appDelegate.activeAccount] sorted:nil ascending:NO] count] > 0) {
[JDStatusBarNotification showWithStatus:NSLocalizedString(@"_transfers_in_queue_", nil) dismissAfter:k_dismissAfterSecond styleName:JDStatusBarStyleDefault];
return;
}
[appDelegate openLoginView:self loginType:loginAdd];
[appDelegate.netQueue cancelAllOperations];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[appDelegate openLoginView:self loginType:loginAdd];
});
}
#pragma --------------------------------------------------------------------------------------------

Просмотреть файл

@ -284,6 +284,12 @@
else if (taskStatus == k_taskStatusSuspend) [task suspend];
else if (taskStatus == k_taskStatusResume) [task resume];
}];
if (taskStatus == k_taskStatusCancel) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[[NCManageDatabase sharedInstance] setMetadataSession:@"" sessionError:@"" sessionSelector:@"" sessionSelectorPost:@"" sessionTaskIdentifier:k_taskIdentifierDone predicate:[NSPredicate predicateWithFormat:@"account = %@ AND session CONTAINS 'download'", _activeAccount]];
});
}
}
if (upload) {
@ -308,25 +314,14 @@
else if (taskStatus == k_taskStatusSuspend) [task suspend];
else if (taskStatus == k_taskStatusResume) [task resume];
}];
}
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 4 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
if (download && taskStatus == k_taskStatusCancel) {
[[NCManageDatabase sharedInstance] setMetadataSession:@"" sessionError:@"" sessionSelector:@"" sessionSelectorPost:@"" sessionTaskIdentifier:k_taskIdentifierDone predicate:[NSPredicate predicateWithFormat:@"account = %@ AND session CONTAINS 'download'", _activeAccount]];
}
if (upload && taskStatus == k_taskStatusCancel) {
[[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"session CONTAINS 'upload'"] clearDateReadDirectoryID:nil];
// File System
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
if (taskStatus == k_taskStatusCancel) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"session CONTAINS 'upload'"] clearDateReadDirectoryID:nil];
[CCUtility removeAllFileID_UPLOAD_ActiveUser:activeUser activeUrl:activeUrl];
});
}
});
}
}
- (void)settingSession:(NSString *)sessionDescription sessionTaskIdentifier:(NSUInteger)sessionTaskIdentifier taskStatus:(NSInteger)taskStatus

Просмотреть файл

@ -340,10 +340,9 @@
[[NCManageDatabase sharedInstance] clearTable:[tableQueueUpload class] account:appDelegate.activeAccount];
[appDelegate.netQueue cancelAllOperations];
[[CCNetworking sharedNetworking] settingSessionsDownload:YES upload:YES taskStatus:k_taskStatusCancel activeAccount:appDelegate.activeAccount activeUser:appDelegate.activeUser activeUrl:appDelegate.activeUrl];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC),dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC),dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
@ -464,7 +463,7 @@
[self.hud visibleIndeterminateHud];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void) {
[appDelegate.netQueue cancelAllOperations];
[[CCNetworking sharedNetworking] settingSessionsDownload:YES upload:YES taskStatus:k_taskStatusCancel activeAccount:appDelegate.activeAccount activeUser:appDelegate.activeUser activeUrl:appDelegate.activeUrl];

Просмотреть файл

@ -213,10 +213,17 @@
{
[self deselectFormRow:sender];
[appDelegate.netQueue cancelAllOperations];
[[CCNetworking sharedNetworking] settingSessionsDownload:YES upload:YES taskStatus:k_taskStatusCancel activeAccount:appDelegate.activeAccount activeUser:appDelegate.activeUser activeUrl:appDelegate.activeUrl];
// Verify session in progress
if ([[[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND sessionTaskIdentifier > 0", appDelegate.activeAccount] sorted:nil ascending:NO] count] > 0) {
[JDStatusBarNotification showWithStatus:NSLocalizedString(@"_transfers_in_queue_", nil) dismissAfter:k_dismissAfterSecond styleName:JDStatusBarStyleDefault];
return;
}
[appDelegate openLoginView:self loginType:loginAdd];
[appDelegate.netQueue cancelAllOperations];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[appDelegate openLoginView:self loginType:loginAdd];
});
}
- (void)addAccountForced
@ -232,12 +239,17 @@
{
[self deselectFormRow:sender];
// Verify session in progress
if ([[[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND sessionTaskIdentifier > 0", appDelegate.activeAccount] sorted:nil ascending:NO] count] > 0) {
[JDStatusBarNotification showWithStatus:NSLocalizedString(@"_transfers_in_queue_", nil) dismissAfter:k_dismissAfterSecond styleName:JDStatusBarStyleDefault];
return;
}
[appDelegate.netQueue cancelAllOperations];
[[CCNetworking sharedNetworking] settingSessionsDownload:YES upload:YES taskStatus:k_taskStatusCancel activeAccount:appDelegate.activeAccount activeUser:appDelegate.activeUser activeUrl:appDelegate.activeUrl];
[appDelegate openLoginView:self loginType:loginModifyPasswordUser];
[self UpdateForm];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[appDelegate openLoginView:self loginType:loginModifyPasswordUser];
});
}
#pragma --------------------------------------------------------------------------------------------
@ -266,24 +278,32 @@
- (void)deleteAccount:(NSString *)account
{
// Verify session in progress
if ([[[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND sessionTaskIdentifier > 0", appDelegate.activeAccount] sorted:nil ascending:NO] count] > 0) {
[JDStatusBarNotification showWithStatus:NSLocalizedString(@"_transfers_in_queue_", nil) dismissAfter:k_dismissAfterSecond styleName:JDStatusBarStyleDefault];
return;
}
[appDelegate.netQueue cancelAllOperations];
[[CCNetworking sharedNetworking] settingSessionsDownload:YES upload:YES taskStatus:k_taskStatusCancel activeAccount:appDelegate.activeAccount activeUser:appDelegate.activeUser activeUrl:appDelegate.activeUrl];
[[NCManageDatabase sharedInstance] clearTable:[tableAccount class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableActivity class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableCapabilities class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableDirectory class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableE2eEncryption class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableExternalSites class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableLocalFile class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableMetadata class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tablePhotoLibrary class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableQueueDownload class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableQueueUpload class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableShare class] account:account];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[[NCManageDatabase sharedInstance] clearTable:[tableAccount class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableActivity class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableCapabilities class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableDirectory class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableE2eEncryption class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableExternalSites class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableLocalFile class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableMetadata class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tablePhotoLibrary class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableQueueDownload class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableQueueUpload class] account:account];
[[NCManageDatabase sharedInstance] clearTable:[tableShare class] account:account];
// Clear active user
[appDelegate settingActiveAccount:nil activeUrl:nil activeUser:nil activeUserID:nil activePassword:nil];
// Clear active user
[appDelegate settingActiveAccount:nil activeUrl:nil activeUser:nil activeUserID:nil activePassword:nil];
});
}
- (void)answerDelAccount:(XLFormRowDescriptor *)sender
@ -306,32 +326,27 @@
- (void)ChangeDefaultAccount:(NSString *)account
{
/*
NSUInteger numInSession = [[[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND session != ''", appDelegate.activeAccount] sorted:nil ascending:NO] count];
NSUInteger numInQueue = [appDelegate.netQueue operationCount];
if (numInSession+numInQueue > 0) {
[JDStatusBarNotification showWithStatus:NSLocalizedString(@"_transfers_in_queue_", nil) dismissAfter:k_dismissAfterSecond styleName:JDStatusBarStyleDefault];
[self UpdateForm];
// Verify session in progress
if ([[[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND sessionTaskIdentifier > 0", appDelegate.activeAccount] sorted:nil ascending:NO] count] > 0) {
[JDStatusBarNotification showWithStatus:NSLocalizedString(@"_transfers_in_queue_", nil) dismissAfter:k_dismissAfterSecond styleName:JDStatusBarStyleDefault];
return;
}
*/
[appDelegate.netQueue cancelAllOperations];
[[CCNetworking sharedNetworking] settingSessionsDownload:YES upload:YES taskStatus:k_taskStatusCancel activeAccount:appDelegate.activeAccount activeUser:appDelegate.activeUser activeUrl:appDelegate.activeUrl];
// change account
tableAccount *tableAccount = [[NCManageDatabase sharedInstance] setAccountActive:account];
if (tableAccount) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
tableAccount *tableAccount = [[NCManageDatabase sharedInstance] setAccountActive:account];
if (tableAccount) {
[appDelegate settingActiveAccount:tableAccount.account activeUrl:tableAccount.url activeUser:tableAccount.user activeUserID:tableAccount.userID activePassword:tableAccount.password];
[appDelegate settingActiveAccount:tableAccount.account activeUrl:tableAccount.url activeUser:tableAccount.user activeUserID:tableAccount.userID activePassword:tableAccount.password];
// Init home
[[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:@"initializeMain" object:nil];
}
[self UpdateForm];
// Init home
[[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:@"initializeMain" object:nil];
[self UpdateForm];
}
});
}
#pragma --------------------------------------------------------------------------------------------