APIdog icon indicating copy to clipboard operation
APIdog copied to clipboard

Disable online via API

Open vladislav805 opened this issue 5 years ago • 0 comments

Stable branch v6.4.5 already has code, but save doesn't works:

	hideOnlineDialogOpen: function() {
		var content = $.e('div', { append: [Site.Loader(true)] });
		var fetch = function() {
			Site.API('account.getPrivacySettings', {
				v: 5.108
			}, onLoad);
		};
		var onLoad = function(result) {
			if (result.error) {
				content.textContent = 'Произошла ошибка';
				return;
			}

			result = result.response;

			var settings = result.settings;
			var needed = null;

			for (var i = 0, item; i < settings.length; ++i) {
				item = settings[i];
				if (item.key === 'online') {
					needed = item;
					break;
				}
			}

			if (!needed) {
				content.textContent = 'Нет возможности изменить онлайн легально.';
				return;
			}

			var currentValue = needed.value.category !== 'all';

			content.innerHTML = '<div>Сейчас скрытие онлайна <b>' + (currentValue ? 'включено' : 'выключено') + '</b></div>';
			content.appendChild($.e('button', {
				html: currentValue ? 'Выключить' : 'Включить',
				onclick: setValue.bind(null, !currentValue)
			}));
		};

		var setValue = function(state) {
			Site.API('account.setPrivacy', {
				key: 'online',
				value: state ? 'all' : 'only_me',
				v: 5.108
			}, onChanged);
		};

		var onChanged = function(result) {
			content.textContent = result.response ? 'Успешно сохранено' : result.error.error_msg;
		};

		var modal = new Modal({
			title: 'Скрытие онлайна',
			content: content,
			footer: [
				{
					name: 'close',
					title: 'Закрыть',
					onclick: function() {
						modal.close();
					}
				}
			]
		}).show();
		fetch();
	},

vladislav805 avatar Dec 17 '19 18:12 vladislav805