cwtch/app/utils.go

29 lines
790 B
Go
Raw Permalink Normal View History

2022-07-05 22:31:44 +00:00
package app
import (
2021-05-03 23:32:48 +00:00
"cwtch.im/cwtch/model/attr"
"cwtch.im/cwtch/model/constants"
"cwtch.im/cwtch/peer"
"time"
)
// WaitGetPeer is a helper function for utility apps not written using the event bus
// Proper use of an App is to call CreatePeer and then process the NewPeer event
// however for small utility use, this function which polls the app until the peer is created
// may fill that usecase better
2022-07-05 22:31:44 +00:00
func WaitGetPeer(app Application, name string) peer.CwtchPeer {
2021-06-02 18:34:57 +00:00
for {
for _, handle := range app.ListProfiles() {
peer := app.GetPeer(handle)
if peer == nil {
continue
}
localName, _ := peer.GetScopedZonedAttribute(attr.PublicScope, attr.ProfileZone, constants.Name)
2021-05-03 23:32:48 +00:00
if localName == name {
return peer
}
}
time.Sleep(100 * time.Millisecond)
}
}