From fd0f221d64cfefd628a48df935c40de2cff06b4e Mon Sep 17 00:00:00 2001
From: Loic Blot <loic.blot@unix-experience.fr>
Date: Thu, 28 Dec 2017 18:18:03 +0100
Subject: [PATCH] Try to migrate settings to a better model

---
 js/devel/legacy.js   | 34 ++++++++++++++--------------------
 js/devel/settings.js | 16 ++++++++++++++++
 templates/main.php   | 12 ++++++------
 3 files changed, 36 insertions(+), 26 deletions(-)
 create mode 100644 js/devel/settings.js

diff --git a/js/devel/legacy.js b/js/devel/legacy.js
index 15453ea..d0a2cf2 100644
--- a/js/devel/legacy.js
+++ b/js/devel/legacy.js
@@ -41,10 +41,7 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout', '$compile'
 			{text: "Send"}
 		];
 
-		$scope.setting_msgLimit = 100;
-		$scope.setting_enableNotifications = 1;
-		$scope.setting_contactOrder = 'lastmsg';
-		$scope.setting_contactOrderReverse = true;
+		$scope.vsettings = SmsSettings;
 
 		$scope.contacts = [];
 		$scope.messages = [];
@@ -68,25 +65,22 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout', '$compile'
 		};
 
 		$scope.setMessageLimit = function () {
-			if ($scope.setting_msgLimit === null || $scope.setting_msgLimit === undefined) {
-				return;
-			}
-			$.post($scope.generateUrl('/set/msglimit'), {'limit': $scope.setting_msgLimit});
+			$.post($scope.generateUrl('/set/msglimit'), {'limit': SmsSettings.messageLimit});
 		};
 
 		$scope.setNotificationSetting = function () {
-			if ($scope.setting_enableNotifications < 0 || $scope.setting_enableNotifications > 2) {
-				$scope.setting_enableNotifications = 0;
-				return;
-			}
-			$.post($scope.generateUrl('/set/notification_state'), {'notification': $scope.setting_enableNotifications});
+			$.post($scope.generateUrl('/set/notification_state'),
+				{
+					'notification': SmsSettings.enableNotifications ? 1 : 0
+				}
+			);
 		};
 
 		$scope.setContactOrderSetting = function () {
 			$.post($scope.generateUrl('/set/contact_order'),
 				{
-					'attribute': $scope.setting_contactOrder,
-					'reverse': $scope.setting_contactOrderReverse
+					'attribute': SmsSettings.contactOrderBy,
+					'reverse': SmsSettings.reverseContactOrder
 				}
 			);
 		};
@@ -334,10 +328,10 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout', '$compile'
 					$('select[name=setting_contact_order]').val(jsondata["contact_order"]);
 					$('input[name=setting_contact_order_reverse]').val(toBool(jsondata["contact_order_reverse"]));
 
-					$scope.setting_msgLimit = parseInt(jsondata["message_limit"]);
-					$scope.setting_enableNotifications = jsondata["notification_state"];
-					$scope.setting_contactOrder = jsondata["contact_order"];
-					$scope.setting_contactOrderReverse = toBool(jsondata["contact_order_reverse"]);
+					SmsSettings.messageLimit = parseInt(jsondata["message_limit"]);
+					SmsSettings.enableNotifications = parseInt(jsondata["notification_state"]) !== 0;
+					SmsSettings.contactOrderBy = jsondata["contact_order"];
+					SmsSettings.reverseContactOrder = toBool(jsondata["contact_order_reverse"]);
 				}
 			});
 		};
@@ -426,7 +420,7 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout', '$compile'
 		};
 
 		$scope.desktopNotify = function (msg) {
-			if ($scope.setting_enableNotifications === 0) {
+			if (!SmsSettings.enableNotifications) {
 				return;
 			}
 
diff --git a/js/devel/settings.js b/js/devel/settings.js
new file mode 100644
index 0000000..967ccad
--- /dev/null
+++ b/js/devel/settings.js
@@ -0,0 +1,16 @@
+/**
+ * Nextcloud - Phone Sync
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later. See the COPYING file.
+ *
+ * @author Loic Blot <loic.blot@unix-experience.fr>
+ * @copyright Loic Blot 2014-2017
+ */
+
+var SmsSettings = {
+	messageLimit: 100,
+	enableNotifications: true,
+	contactOrderBy: 'lastmsg',
+	reverseContactOrder: true
+};
\ No newline at end of file
diff --git a/templates/main.php b/templates/main.php
index 2c61223..6a6840e 100644
--- a/templates/main.php
+++ b/templates/main.php
@@ -12,7 +12,7 @@ use \OCA\OcSms\Lib\CountryCodes;
 		<div id="app-contacts-loader" class="icon-loading" ng-show="isContactsLoading">
 		</div>
 		<ul class="contact-list" ng-show="!isContactsLoading">
-			<li ng-repeat="contact in contacts | orderBy:setting_contactOrder:setting_contactOrderReverse" peer-label="{{ contact.label }}" ng-click="loadConversation(contact);" href="#">
+			<li ng-repeat="contact in contacts | orderBy:vsettings.contactOrderBy:vsettings.reverseContactOrder" peer-label="{{ contact.label }}" ng-click="loadConversation(contact);" href="#">
 				<img class="ocsms-plavatar" ng-src="{{ contact.avatar }}" ng-show="contact.avatar !== undefined" />
 				<div class="ocsms-plavatar" ng-show="contact.avatar === undefined" ng-style="{'background-color': (contact.uid | peerColor)}">{{ contact.label | firstCharacter }}</div>
 				<a class="ocsms-plname" style="{{ contact.unread > 0 ? 'font-weight:bold;' : ''}}" mailbox-label="{{ contact.label }}" mailbox-navigation="{{ contact.nav }}">{{ contact.label }}{{ contact.unread > 0 ? ' (' + contact.unread + ') ' : '' }}</a>
@@ -25,8 +25,8 @@ use \OCA\OcSms\Lib\CountryCodes;
 		</div>
 		<div id="app-settings-content">
 			<div><label for="setting_msg_per_page">Max messages on tab loading</label>
-				<input type="number" min="10" max="10000" name="setting_msg_per_page" ng-model="setting_msgLimit" ng-change="setMessageLimit()" to-int />
-				<span class="label-invalid-input" ng-if="setting_msgLimit == null || setting_msgLimit == undefined">Invalid message limit</span>
+				<input type="number" min="10" max="10000" name="setting_msg_per_page" ng-model="vsettings.messageLimit" ng-change="setMessageLimit()" to-int />
+				<span class="label-invalid-input" ng-if="vsettings.messageLimit == null || vsettings.messageLimit == undefined">Invalid message limit</span>
 			</div>
 
 			<div><label for="intl_phone">Country code</label>
@@ -40,17 +40,17 @@ use \OCA\OcSms\Lib\CountryCodes;
 
 			<div>
 				<label for="setting_contact_order">Contact ordering</label>
-				<select name="setting_contact_order" ng-model="setting_contactOrder" ng-change="setContactOrderSetting()">
+				<select name="setting_contact_order" ng-model="vsettings.contactOrderBy" ng-change="setContactOrderSetting()">
 					<option value="lastmsg">Last message</option>
 					<option value="label">Label</option>
 				</select>
 				<label for "setting_contact_order_reverse">Reverse ?</label>
-				<input type="checkbox" ng-model="setting_contactOrderReverse" ng-change="setContactOrderSetting()" />
+				<input type="checkbox" ng-model="vsettings.reverseContactOrder" ng-change="setContactOrderSetting()" />
 			</div>
 
 			<div>
 				<label for"setting_notif">Notification settings</label>
-				<select name="setting_notif" ng-model="setting_enableNotifications" ng-change="setNotificationSetting()">
+				<select name="setting_notif" ng-model="vsetting.enableNotifications" ng-change="setNotificationSetting()">
 					<option value="1">Enable</option>
 					<option value="0">Disable</option>
 				</select>