mirror of
https://github.com/wavetermdev/waveterm.git
synced 2025-02-23 02:51:26 +01:00
do synchronous webscreen delete
This commit is contained in:
parent
a7faf2040f
commit
5e5a6aa53f
@ -176,6 +176,7 @@ func init() {
|
|||||||
registerCmdFn("client", ClientCommand)
|
registerCmdFn("client", ClientCommand)
|
||||||
registerCmdFn("client:show", ClientShowCommand)
|
registerCmdFn("client:show", ClientShowCommand)
|
||||||
registerCmdFn("client:set", ClientSetCommand)
|
registerCmdFn("client:set", ClientSetCommand)
|
||||||
|
registerCmdFn("client:notifyupdatewriter", ClientNotifyUpdateWriterCommand)
|
||||||
|
|
||||||
registerCmdFn("telemetry", TelemetryCommand)
|
registerCmdFn("telemetry", TelemetryCommand)
|
||||||
registerCmdFn("telemetry:on", TelemetryOnCommand)
|
registerCmdFn("telemetry:on", TelemetryOnCommand)
|
||||||
@ -1691,11 +1692,26 @@ func ScreenWebShareCommand(ctx context.Context, pk *scpacket.FeCommandPacketType
|
|||||||
}
|
}
|
||||||
infoWebShareLink = true
|
infoWebShareLink = true
|
||||||
} else {
|
} else {
|
||||||
|
screen, err := sstore.GetScreenById(ctx, ids.ScreenId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("cannot get screen: %v", err)
|
||||||
|
}
|
||||||
|
if screen == nil {
|
||||||
|
return nil, fmt.Errorf("screen not found")
|
||||||
|
}
|
||||||
|
if screen.ShareMode != sstore.ShareModeWeb {
|
||||||
|
return nil, fmt.Errorf("screen is not currently shared")
|
||||||
|
}
|
||||||
|
webUpdate := pcloud.MakeScreenDelUpdate(screen, ids.ScreenId)
|
||||||
|
err = pcloud.DoSyncWebUpdate(webUpdate)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error stopping webshare, error contacting prompt cloud server: %v", err)
|
||||||
|
}
|
||||||
err = sstore.ScreenWebShareStop(ctx, ids.ScreenId)
|
err = sstore.ScreenWebShareStop(ctx, ids.ScreenId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("cannot stop web-sharing screen: %v", err)
|
return nil, fmt.Errorf("cannot stop web-sharing screen: %v", err)
|
||||||
}
|
}
|
||||||
infoMsg = fmt.Sprintf("screen is no longer web shared")
|
infoMsg = fmt.Sprintf("screen websharing stopped")
|
||||||
}
|
}
|
||||||
screen, err := sstore.GetScreenById(ctx, ids.ScreenId)
|
screen, err := sstore.GetScreenById(ctx, ids.ScreenId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -2749,6 +2765,16 @@ func ClientCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (sstor
|
|||||||
return nil, fmt.Errorf("/client requires a subcommand: %s", formatStrs([]string{"show", "set"}, "or", false))
|
return nil, fmt.Errorf("/client requires a subcommand: %s", formatStrs([]string{"show", "set"}, "or", false))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ClientNotifyUpdateWriterCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (sstore.UpdatePacket, error) {
|
||||||
|
sstore.NotifyUpdateWriter()
|
||||||
|
update := sstore.ModelUpdate{
|
||||||
|
Info: &sstore.InfoMsgType{
|
||||||
|
InfoMsg: fmt.Sprintf("notified update writer"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return update, nil
|
||||||
|
}
|
||||||
|
|
||||||
func boolToStr(v bool, trueStr string, falseStr string) string {
|
func boolToStr(v bool, trueStr string, falseStr string) string {
|
||||||
if v {
|
if v {
|
||||||
return trueStr
|
return trueStr
|
||||||
|
@ -202,6 +202,16 @@ func MakeScreenNewUpdate(screen *sstore.ScreenType, webShareOpts sstore.ScreenWe
|
|||||||
return rtn
|
return rtn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MakeScreenDelUpdate(screen *sstore.ScreenType, screenId string) *WebShareUpdateType {
|
||||||
|
rtn := &WebShareUpdateType{
|
||||||
|
ScreenId: screenId,
|
||||||
|
UpdateId: -1,
|
||||||
|
UpdateType: sstore.UpdateType_ScreenDel,
|
||||||
|
UpdateTs: time.Now().UnixMilli(),
|
||||||
|
}
|
||||||
|
return rtn
|
||||||
|
}
|
||||||
|
|
||||||
func makeWebShareUpdate(ctx context.Context, update *sstore.ScreenUpdateType) (*WebShareUpdateType, error) {
|
func makeWebShareUpdate(ctx context.Context, update *sstore.ScreenUpdateType) (*WebShareUpdateType, error) {
|
||||||
rtn := &WebShareUpdateType{
|
rtn := &WebShareUpdateType{
|
||||||
ScreenId: update.ScreenId,
|
ScreenId: update.ScreenId,
|
||||||
|
@ -2463,7 +2463,7 @@ func ScreenWebShareStop(ctx context.Context, screenId string) error {
|
|||||||
}
|
}
|
||||||
query = `UPDATE screen SET sharemode = ?, webshareopts = ? WHERE screenid = ?`
|
query = `UPDATE screen SET sharemode = ?, webshareopts = ? WHERE screenid = ?`
|
||||||
tx.Exec(query, ShareModeLocal, "null", screenId)
|
tx.Exec(query, ShareModeLocal, "null", screenId)
|
||||||
insertScreenDelUpdate(tx, screenId)
|
handleScreenDelUpdate(tx, screenId)
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -2494,12 +2494,18 @@ func insertScreenNewUpdate(tx *TxWrap, screenId string) {
|
|||||||
NotifyUpdateWriter()
|
NotifyUpdateWriter()
|
||||||
}
|
}
|
||||||
|
|
||||||
func insertScreenDelUpdate(tx *TxWrap, screenId string) {
|
func handleScreenDelUpdate(tx *TxWrap, screenId string) {
|
||||||
query := `DELETE FROM screenupdate WHERE screenid = ?`
|
query := `DELETE FROM screenupdate WHERE screenid = ?`
|
||||||
tx.Exec(query, screenId)
|
tx.Exec(query, screenId)
|
||||||
query = `DELETE FROM webptypos WHERE screenid = ?`
|
query = `DELETE FROM webptypos WHERE screenid = ?`
|
||||||
tx.Exec(query, screenId)
|
tx.Exec(query, screenId)
|
||||||
|
// don't insert UpdateType_ScreenDel (we already processed it in cmdrunner)
|
||||||
|
}
|
||||||
|
|
||||||
|
func insertScreenDelUpdate(tx *TxWrap, screenId string) {
|
||||||
|
handleScreenDelUpdate(tx, screenId)
|
||||||
insertScreenUpdate(tx, screenId, UpdateType_ScreenDel)
|
insertScreenUpdate(tx, screenId, UpdateType_ScreenDel)
|
||||||
|
// don't insert UpdateType_ScreenDel (we already processed it in cmdrunner)
|
||||||
}
|
}
|
||||||
|
|
||||||
func insertScreenLineUpdate(tx *TxWrap, screenId string, lineId string, updateType string) {
|
func insertScreenLineUpdate(tx *TxWrap, screenId string, lineId string, updateType string) {
|
||||||
|
Loading…
Reference in New Issue
Block a user