Paste P377

Masterwork From Distant Lands
ActivePublic

Authored by sitter on Apr 23 2019, 1:01 PM.
diff --git a/src/github.com/matrix-org/go-neb/services/meetingbot/meetingbot.go b/src/github.com/matrix-org/go-neb/services/meetingbot/meetingbot.go
index ed4568e..9226994 100644
--- a/src/github.com/matrix-org/go-neb/services/meetingbot/meetingbot.go
+++ b/src/github.com/matrix-org/go-neb/services/meetingbot/meetingbot.go
@@ -3,7 +3,8 @@ package meetingbot
import (
"fmt"
- "regexp"
+ "regexp"
+ "sync"
"github.com/matrix-org/go-neb/types"
"github.com/matrix-org/gomatrix"
@@ -23,6 +24,8 @@ var currentUser string
var meetingChair = ""
var regexpAll = regexp.MustCompile(".*")
+var mutex sync.Mutex
+
// Commands supported:
// !rollcall
// Responds with a notice of "meeting started"
@@ -35,6 +38,9 @@ func (e *Service) Commands(cli *gomatrix.Client) []types.Command {
types.Command{
Path: []string{"rollcall"},
Command: func(roomID, userID string, args []string) (interface{}, error) {
+ mutex.Lock()
+ defer mutex.Unlock()
+
if meetingChair != "" {
return &gomatrix.TextMessage{"m.text", string("Meeting already in progress")}, nil
}
@@ -45,11 +51,14 @@ func (e *Service) Commands(cli *gomatrix.Client) []types.Command {
types.Command{
Path: []string{"present"},
Command: func(roomID, userID string, args []string) (interface{}, error) {
+ mutex.Lock()
+ defer mutex.Unlock()
+
var present = false
for i := 0; i < len(attendeesList); i++ {
if attendeesList[i] == userID {
present = true
- break;
+ break
}
}
if !present {
@@ -61,20 +70,23 @@ func (e *Service) Commands(cli *gomatrix.Client) []types.Command {
types.Command{
Path: []string{"next"},
Command: func(roomID, userID string, args []string) (interface{}, error) {
+ mutex.Lock()
+ defer mutex.Unlock()
+
if userID != meetingChair {
return &gomatrix.TextMessage{"m.text", string("To avoid confusion, only the chair may progress")}, nil
}
if len(attendeesList) > 0 {
currentUser = attendeesList[0]
attendeesList = attendeesList[1:]
- doneAttendeesList = append(doneAttendeesList, currentUser)
+ doneAttendeesList = append(doneAttendeesList, currentUser)
var nextUser = "Silence!"
if len(attendeesList) > 0 {
nextUser = attendeesList[0]
}
return &gomatrix.TextMessage{"m.text", fmt.Sprintf("%s's turn, Followed by %s", currentUser, nextUser)}, nil
} else {
- meetingChair = ""
+ meetingChair = ""
return &gomatrix.TextMessage{"m.text", string("Meeting is over, thanks for attending!")}, nil
}
},
@@ -82,25 +94,27 @@ func (e *Service) Commands(cli *gomatrix.Client) []types.Command {
}
}
-
func (s *Service) Expansions(cli *gomatrix.Client) []types.Expansion {
return []types.Expansion{
types.Expansion{
Regexp: regexpAll,
Expand: func(roomID, userID string, issueKeyGroups []string) interface{} {
+ mutex.Lock()
+ defer mutex.Unlock()
+
if meetingChair != "" {
var done = false
for i := 0; i < len(doneAttendeesList); i++ {
if doneAttendeesList[i] == userID {
done = true
- break;
+ break
}
}
var present = false
for i := 0; i < len(attendeesList); i++ {
if attendeesList[i] == userID {
present = true
- break;
+ break
}
}
if !done && !present && userID != s.ServiceUserID() && userID != meetingChair {
@@ -115,6 +129,9 @@ func (s *Service) Expansions(cli *gomatrix.Client) []types.Expansion {
func init() {
types.RegisterService(func(serviceID, serviceUserID, webhookEndpointURL string) types.Service {
+ mutex.Lock()
+ defer mutex.Unlock()
+
return &Service{
DefaultService: types.NewDefaultService(serviceID, serviceUserID, ServiceType),
}
sitter edited the content of this paste. (Show Details)Apr 23 2019, 1:01 PM
sitter changed the title of this paste from untitled to Masterwork From Distant Lands.