109 lines
3.6 KiB
JavaScript
109 lines
3.6 KiB
JavaScript
const { hiddifyClient } = require('./client.js');
|
|
const hiddify = require("./hiddify_grpc_web_pb.js");
|
|
|
|
function openConnectionPage() {
|
|
|
|
$("#extension-list-container").show();
|
|
$("#extension-page-container").hide();
|
|
$("#connection-page").show();
|
|
connect();
|
|
$("#connect-button").click(async () => {
|
|
const hsetting_request = new hiddify.ChangeHiddifySettingsRequest();
|
|
hsetting_request.setHiddifySettingsJson($("#hiddify-settings").val());
|
|
try{
|
|
const hres=await hiddifyClient.changeHiddifySettings(hsetting_request, {});
|
|
}catch(err){
|
|
$("#hiddify-settings").val("")
|
|
console.log(err)
|
|
}
|
|
|
|
const parse_request = new hiddify.ParseRequest();
|
|
parse_request.setContent($("#config-content").val());
|
|
try{
|
|
const pres=await hiddifyClient.parse(parse_request, {});
|
|
if (pres.getResponseCode() !== hiddify.ResponseCode.OK){
|
|
alert(pres.getMessage());
|
|
return
|
|
}
|
|
$("#config-content").val(pres.getContent());
|
|
}catch(err){
|
|
console.log(err)
|
|
alert(JSON.stringify(err))
|
|
return
|
|
}
|
|
|
|
const request = new hiddify.StartRequest();
|
|
|
|
request.setConfigContent($("#config-content").val());
|
|
request.setEnableRawConfig(false);
|
|
try{
|
|
const res=await hiddifyClient.start(request, {});
|
|
console.log(res.getCoreState(),res.getMessage())
|
|
handleCoreStatus(res.getCoreState());
|
|
}catch(err){
|
|
console.log(err)
|
|
alert(JSON.stringify(err))
|
|
return
|
|
}
|
|
|
|
|
|
})
|
|
|
|
$("#disconnect-button").click(async () => {
|
|
const request = new hiddify.Empty();
|
|
try{
|
|
const res=await hiddifyClient.stop(request, {});
|
|
console.log(res.getCoreState(),res.getMessage())
|
|
handleCoreStatus(res.getCoreState());
|
|
}catch(err){
|
|
console.log(err)
|
|
alert(JSON.stringify(err))
|
|
return
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
function connect(){
|
|
const request = new hiddify.Empty();
|
|
const stream = hiddifyClient.coreInfoListener(request, {});
|
|
stream.on('data', (response) => {
|
|
console.log('Receving ',response);
|
|
handleCoreStatus(response);
|
|
});
|
|
|
|
stream.on('error', (err) => {
|
|
console.error('Error opening extension page:', err);
|
|
// openExtensionPage(extensionId);
|
|
});
|
|
|
|
stream.on('end', () => {
|
|
console.log('Stream ended');
|
|
setTimeout(connect, 1000);
|
|
|
|
});
|
|
}
|
|
|
|
|
|
function handleCoreStatus(status){
|
|
if (status == hiddify.CoreState.STOPPED){
|
|
$("#connection-before-connect").show();
|
|
$("#connection-connecting").hide();
|
|
}else{
|
|
$("#connection-before-connect").hide();
|
|
$("#connection-connecting").show();
|
|
if (status == hiddify.CoreState.STARTING){
|
|
$("#connection-status").text("Starting");
|
|
$("#connection-status").css("color", "yellow");
|
|
}else if (status == hiddify.CoreState.STOPPING){
|
|
$("#connection-status").text("Stopping");
|
|
$("#connection-status").css("color", "red");
|
|
}else if (status == hiddify.CoreState.STARTED){
|
|
$("#connection-status").text("Connected");
|
|
$("#connection-status").css("color", "green");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
module.exports = { openConnectionPage }; |