Skip to content

Commit

Permalink
MOBILE-2127 data: Sync activity
Browse files Browse the repository at this point in the history
  • Loading branch information
crazyserver committed Jul 19, 2017
1 parent 6c6fd78 commit 3301978
Show file tree
Hide file tree
Showing 7 changed files with 491 additions and 9 deletions.
2 changes: 1 addition & 1 deletion www/addons/mod/data/controllers/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ angular.module('mm.addons.mod_data')

// Create an ID to assign files.
var entryTemp = entryId;
if ((typeof entryId == "undefined" || entryId === false) && offline) {
if (typeof entryId == "undefined" || entryId === false) {
entryTemp = - (new Date().getTime());
}

Expand Down
17 changes: 16 additions & 1 deletion www/addons/mod/data/controllers/entry.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,15 @@ angular.module('mm.addons.mod_data')
*/
.controller('mmaModDataEntryCtrl', function($scope, $stateParams, $mmaModData, mmaModDataComponent, $mmCourse, $q, $mmEvents,
$mmText, $translate, $mmUtil, $mmSite, $mmaModDataHelper, $mmGroups, $ionicScrollDelegate, mmaModDataEventEntryChanged,
$ionicHistory, $mmaModDataOffline) {
$ionicHistory, $mmaModDataOffline, mmaModDataEventAutomSynced) {

var module = $stateParams.module || {},
courseId = $stateParams.courseid,
entryId = $stateParams.entryid || false,
page = $stateParams.page || false,
data,
entryChangedObserver,
syncObserver,
scrollView,
access,
offlineActions = [];
Expand Down Expand Up @@ -211,7 +212,21 @@ angular.module('mm.addons.mod_data')
}
});

// Refresh entry on sync.
syncObserver = $mmEvents.on(mmaModDataEventAutomSynced, function(eventData) {
if (eventData.entryid == entryId && data.id == eventData.dataid && $mmSite.getId() == eventData.siteid) {
if (eventData.deleted) {
// If deleted, go back.
$ionicHistory.goBack();
} else {
$scope.databaseLoaded = false;
return fetchEntryData(true);
}
}
});

$scope.$on('$destroy', function() {
entryChangedObserver && entryChangedObserver.off && entryChangedObserver.off();
syncObserver && syncObserver.off && syncObserver.off();
});
});
41 changes: 37 additions & 4 deletions www/addons/mod/data/controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,16 @@ angular.module('mm.addons.mod_data')
*/
.controller('mmaModDataIndexCtrl', function($scope, $stateParams, $mmaModData, mmaModDataComponent, $mmCourse, $mmCourseHelper, $q,
$mmText, $translate, $mmEvents, mmCoreEventOnlineStatusChanged, $mmApp, $mmUtil, $mmSite, $mmaModDataHelper, $mmGroups,
mmaModDataEventEntryChanged, $ionicModal, mmaModDataPerPage, $state, $mmComments, $mmaModDataOffline) {
mmaModDataEventEntryChanged, $ionicModal, mmaModDataPerPage, $state, $mmComments, $mmaModDataOffline, $mmaModDataSync,
mmaModDataEventAutomSynced) {

var module = $stateParams.module || {},
courseId = $stateParams.courseid,
siteId = $mmSite.getId(),
data,
entryChangedObserver,
onlineObserver,
syncObserver,
hasComments = false;

$scope.title = module.name;
Expand Down Expand Up @@ -65,9 +67,14 @@ angular.module('mm.addons.mod_data')
$scope.data = databaseData;

$scope.database = data;

if (sync) {
// Try to synchronize the feedback.
return syncDatabase(showErrors).catch(function() {
// Ignore errors.
});
}
}).then(function() {
return $mmaModData.getDatabaseAccessInformation(data.id);

}).then(function(accessData) {
$scope.access = accessData;

Expand Down Expand Up @@ -288,6 +295,22 @@ angular.module('mm.addons.mod_data')
});
}

// Tries to synchronize the database.
function syncDatabase(showErrors) {
return $mmaModDataSync.syncDatabase(data.id).then(function(result) {
if (result.warnings && result.warnings.length) {
$mmUtil.showErrorModal(result.warnings[0]);
}

return result.updated;
}).catch(function(error) {
if (showErrors) {
$mmUtil.showErrorModalDefault(error, 'mm.core.errorsync', true);
}
return $q.reject();
});
}

fetchDatabaseData(false, true).then(function() {
$mmaModData.logView(data.id).then(function() {
$mmCourse.checkModuleCompletion(courseId, module.completionstatus);
Expand Down Expand Up @@ -399,16 +422,26 @@ angular.module('mm.addons.mod_data')
$scope.isOnline = online;
});

// Refresh entry on change.
// Refresh entries on change.
entryChangedObserver = $mmEvents.on(mmaModDataEventEntryChanged, function(eventData) {
if (data.id == eventData.dataId && siteId == eventData.siteId) {
$scope.databaseLoaded = false;
return fetchDatabaseData(true);
}
});

// Refresh entries on sync.
syncObserver = $mmEvents.on(mmaModDataEventAutomSynced, function(eventData) {
// Update just when all database is synced.
if (data.id == eventData.dataid && siteId == eventData.siteid && typeof eventData.entryid == "undefined") {
$scope.databaseLoaded = false;
return fetchDatabaseData(true);
}
});

$scope.$on('$destroy', function() {
onlineObserver && onlineObserver.off && onlineObserver.off();
entryChangedObserver && entryChangedObserver.off && entryChangedObserver.off();
syncObserver && syncObserver.off && syncObserver.off();
});
});
7 changes: 7 additions & 0 deletions www/addons/mod/data/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ angular.module('mm.addons.mod_data', ['mm.core'])
.constant('mmaModDataComponent', 'mmaModData')
.constant('mmaModDataEventEntryChanged', 'mma-mod_data_entry_changed')
.constant('mmaModDataPerPage', 25)
.constant('mmaModDataEventAutomSynced', 'mma_mod_data_autom_synced')
.constant('mmaModDataSyncTime', 300000) // In milliseconds.

.config(function($stateProvider) {

Expand Down Expand Up @@ -81,4 +83,9 @@ angular.module('mm.addons.mod_data', ['mm.core'])
$mmContentLinksDelegateProvider.registerLinkHandler('mmaModData:approve', '$mmaModDataHandlers.approveEntryLinksHandler');
$mmContentLinksDelegateProvider.registerLinkHandler('mmaModData:delete', '$mmaModDataHandlers.deleteEntryLinksHandler');
$mmContentLinksDelegateProvider.registerLinkHandler('mmaModData:edit', '$mmaModDataHandlers.editEntryLinksHandler');
})

.run(function($mmCronDelegate) {
// Register sync handler.
$mmCronDelegate.register('mmaModData', '$mmaModDataHandlers.syncHandler');
});
14 changes: 12 additions & 2 deletions www/addons/mod/data/services/data.js
Original file line number Diff line number Diff line change
Expand Up @@ -626,7 +626,12 @@ angular.module('mm.addons.mod_data')
params.groupid = groupId;
}

return site.write('mod_data_add_entry', params).catch(function(error) {
return site.write('mod_data_add_entry', params).then(function(result) {
if (result.newentryid) {
return result;
}
return $q.reject();
}).catch(function(error) {
return $q.reject({
error: error,
wserror: $mmUtil.isWebServiceError(error)
Expand Down Expand Up @@ -758,7 +763,12 @@ angular.module('mm.addons.mod_data')
data: data
};

return site.write('mod_data_update_entry', params).catch(function(error) {
return site.write('mod_data_update_entry', params).then(function(result) {
if (result.updated) {
return result;
}
return $q.reject();
}).catch(function(error) {
return $q.reject({
error: error,
wserror: $mmUtil.isWebServiceError(error)
Expand Down
Loading

0 comments on commit 3301978

Please sign in to comment.