mirror of
https://github.com/wavetermdev/waveterm.git
synced 2025-02-22 02:41:23 +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:show", ClientShowCommand)
|
||||
registerCmdFn("client:set", ClientSetCommand)
|
||||
registerCmdFn("client:notifyupdatewriter", ClientNotifyUpdateWriterCommand)
|
||||
|
||||
registerCmdFn("telemetry", TelemetryCommand)
|
||||
registerCmdFn("telemetry:on", TelemetryOnCommand)
|
||||
@ -1691,11 +1692,26 @@ func ScreenWebShareCommand(ctx context.Context, pk *scpacket.FeCommandPacketType
|
||||
}
|
||||
infoWebShareLink = true
|
||||
} 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)
|
||||
if err != nil {
|
||||
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)
|
||||
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))
|
||||
}
|
||||
|
||||
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 {
|
||||
if v {
|
||||
return trueStr
|
||||
|
@ -202,6 +202,16 @@ func MakeScreenNewUpdate(screen *sstore.ScreenType, webShareOpts sstore.ScreenWe
|
||||
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) {
|
||||
rtn := &WebShareUpdateType{
|
||||
ScreenId: update.ScreenId,
|
||||
|
@ -2463,7 +2463,7 @@ func ScreenWebShareStop(ctx context.Context, screenId string) error {
|
||||
}
|
||||
query = `UPDATE screen SET sharemode = ?, webshareopts = ? WHERE screenid = ?`
|
||||
tx.Exec(query, ShareModeLocal, "null", screenId)
|
||||
insertScreenDelUpdate(tx, screenId)
|
||||
handleScreenDelUpdate(tx, screenId)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
@ -2494,12 +2494,18 @@ func insertScreenNewUpdate(tx *TxWrap, screenId string) {
|
||||
NotifyUpdateWriter()
|
||||
}
|
||||
|
||||
func insertScreenDelUpdate(tx *TxWrap, screenId string) {
|
||||
func handleScreenDelUpdate(tx *TxWrap, screenId string) {
|
||||
query := `DELETE FROM screenupdate WHERE screenid = ?`
|
||||
tx.Exec(query, screenId)
|
||||
query = `DELETE FROM webptypos WHERE 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)
|
||||
// don't insert UpdateType_ScreenDel (we already processed it in cmdrunner)
|
||||
}
|
||||
|
||||
func insertScreenLineUpdate(tx *TxWrap, screenId string, lineId string, updateType string) {
|
||||
|
Loading…
Reference in New Issue
Block a user