new: Big Change, Add support for Extensions 😍
This commit is contained in:
109
extension/html/rpc/connectionPage.js
Normal file
109
extension/html/rpc/connectionPage.js
Normal file
@@ -0,0 +1,109 @@
|
||||
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 };
|
||||
Reference in New Issue
Block a user