// FIXME: receive members as splice, blocked by https://github.com/go-qml/qml/issues/137 func (api *textsecureAPI) NewGroup(name string, members string) error { m := strings.Split(members, ",") group, err := textsecure.NewGroup(name, m) if err != nil { showError(err) return err } members = members + "," + config.Tel groups[group.Hexid] = &GroupRecord{ GroupID: group.Hexid, Name: name, Members: members, } saveGroup(groups[group.Hexid]) session := sessionsModel.Get(group.Hexid) msg := session.Add(groupUpdateMsg(append(m, config.Tel), name), "", "", "", true) msg.Flags = msgFlagGroupNew qml.Changed(msg, &msg.Flags) saveMessage(msg) return nil }
func main() { flag.Parse() log.SetFlags(0) client := &textsecure.Client{ GetConfig: getConfig, GetLocalContacts: getLocalContacts, GetVerificationCode: getVerificationCode, GetStoragePassword: getStoragePassword, MessageHandler: messageHandler, RegistrationDone: registrationDone, } err := textsecure.Setup(client) if err != nil { log.Fatal(err) } if !echo { contacts, err := textsecure.GetRegisteredContacts() if err != nil { log.Printf("Could not get contacts: %s\n", err) } telToName = make(map[string]string) for _, c := range contacts { telToName[c.Tel] = c.Name } if newgroup != "" { s := strings.Split(newgroup, ":") textsecure.NewGroup(s[0], s[1:]) return } if leavegroup != "" { textsecure.LeaveGroup(leavegroup) return } // If "to" matches a contact name then get its phone number, otherwise assume "to" is a phone number for _, c := range contacts { if strings.EqualFold(c.Name, to) { to = c.Tel break } } if to != "" { // Terminate the session with the peer if endsession { textsecure.EndSession(to, "TERMINATE") return } // Send attachment with optional message then exit if attachment != "" { f, err := os.Open(attachment) if err != nil { log.Fatal(err) } _, err = textsecure.SendAttachment(to, message, f) if err != nil { log.Fatal(err) } return } if stress > 0 { c := make(chan int, stress) for i := 0; i < stress; i++ { go func(i int) { sendMessage(false, to, fmt.Sprintf("Stress %d\n", i)) c <- i }(i) } for i := 0; i < stress; i++ { <-c } return } // Send a message then exit if message != "" { err := sendMessage(group, to, message) if err != nil { log.Fatal(err) } return } // Enter conversation mode go conversationLoop(group) } } err = textsecure.StartListening() if err != nil { log.Println(err) } }