// Copyright (c) 2025, Jingrow and contributors
// For license information, please see license.txt

jingrow.ui.form.on("Jsite Server", {
	refresh(frm) {
		if (frm.pg.instance_id) {
			frm.add_custom_button(__('重启'), function() {
				// 弹出确认对话框
				jingrow.confirm(
					__('确定要重启服务器吗？重启过程中服务器将暂时不可用。'),
					function() {
						restart_server(frm);
					}
				);
			});
			
			frm.add_custom_button(__('重置密码'), function() {
				// 弹出密码输入对话框
				jingrow.prompt(
					{ 
						fieldtype: 'Password', 
						label: __('服务器密码'), 
						fieldname: 'new_password', 
						reqd: 1,
						description: __('长度为 8 至 30 个字符，必须同时包含大小写英文字母、数字和特殊符号。')
					},
					function(values) {
						if (values.new_password) {
							reset_password(frm, values.new_password);
						} else {
							jingrow.msgprint({
								title: __('错误'),
								message: __('请输入新密码'),
								indicator: 'red'
							});
						}
					},
					__('重置服务器密码')
				);
			});
			
			frm.add_custom_button(__('重置密钥对'), function() {
				// 弹出确认对话框
				jingrow.confirm(
					__('确定要重置密钥对吗？这将删除旧的密钥对并创建新的密钥对。重置后需要使用新的私钥才能连接服务器。'),
					function() {
						reset_key_pair(frm);
					}
				);
			});
			
			frm.add_custom_button(__('重置系统'), function() {
				// 弹出确认对话框
				jingrow.confirm(
					__('确定要重置系统吗？这将清除所有数据并重新安装系统，操作不可逆！'),
					function() {
						reset_system(frm);
					}
				);
			});
		}
		
		// 为password字段添加眼睛图标
		if (frm.get_field('password')) {
			let password_field = frm.get_field('password');
			
			// 确保toggle-password按钮可见
			password_field.toggle_password.removeClass('hidden');
			
			// 重写toggle_password的点击事件
			password_field.toggle_password.off('click').on('click', function() {
				if (password_field.$input.attr('type') === 'password') {
					// 使用jingrow.call获取解密后的密码
					jingrow.call({
						method: 'jingrow.client.get_password',
						args: {
							pagetype: 'Jsite Server',
							name: frm.pg.name,
							fieldname: 'password'
						},
						callback: function(r) {
							if (r.message) {
								password_field.$input.attr('type', 'text');
								password_field.$input.val(r.message);
								password_field.toggle_password.html(jingrow.utils.icon('hide', 'sm'));
							} else {
								jingrow.msgprint({
									title: __('提示'),
									message: __('当前没有保存的密码'),
									indicator: 'yellow'
								});
							}
						}
					});
				} else {
					password_field.$input.attr('type', 'password');
					password_field.$input.val('••••••••');
					password_field.toggle_password.html(jingrow.utils.icon('unhide', 'sm'));
				}
			});
		}
	}
});

function restart_server(frm) {
	jingrow.call({
		method: 'jcloud.api.aliyun_server_light.reboot_aliyun_instance',
		args: {
			instance_id: frm.pg.instance_id,
			region_id: frm.pg.region
		}
	});
}

function reset_password(frm, new_password) {
	jingrow.call({
		method: 'jcloud.api.aliyun_server_light.reset_aliyun_instance_password',
		args: {
			instance_id: frm.pg.instance_id,
			password: new_password,
			region_id: frm.pg.region
		}
	});
}

function reset_key_pair(frm) {
	jingrow.call({
		method: 'jcloud.api.aliyun_server_light.reset_server_key_pair',
		args: {
			instance_id: frm.pg.instance_id
		}
	});
}

function reset_system(frm) {
	jingrow.call({
		method: 'jcloud.api.aliyun_server_light.reset_aliyun_instance_system',
		args: {
			instance_id: frm.pg.instance_id,
			region_id: frm.pg.region
		}
	});
}
