go_dreamfactory/cmd/v2/ui/views/friend_agree.go
2022-08-19 18:13:13 +08:00

95 lines
2.1 KiB
Go

package formview
import (
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm"
"go_dreamfactory/modules/friend"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
)
// 好友审批
type FriendAgreeView struct {
ListBaseView
}
func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject {
//init required
this.initItemList()
//同意提交
agreeBtn := widget.NewButtonWithIcon("同意", theme.ConfirmIcon(), func() {
if err := service.GetPttService().SendToClient(
t.MainType,
t.SubType,
&pb.FriendAgreeReq{
FriendIds: this.selItemIds,
},
); err != nil {
logrus.Error(err)
return
}
this.listBtnFun()
})
//拒绝
refuseBtn := widget.NewButtonWithIcon("拒绝", theme.CancelIcon(), func() {
if err := service.GetPttService().SendToClient(
string(comm.ModuleFriend),
friend.FriendSubTypeRefuse,
&pb.FriendRefuseReq{
FriendIds: this.selItemIds,
}); err != nil {
logrus.Error(err)
return
}
this.listBtnFun()
})
this.createItemListWithCheck()
applyListBtn := widget.NewButton("申请列表", this.listBtnFun())
split := container.NewHSplit(this.dataListWidget, container.NewVBox(applyListBtn, agreeBtn, refuseBtn))
split.Offset = 1
this.dataListener()
return split
}
// listener applyListdata
func (this *FriendAgreeView) dataListener() {
this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{
OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage)
if !(data.MainType == string(comm.ModuleFriend) &&
data.SubType == friend.FriendSubTypeApplyList) {
return
}
rsp := &pb.FriendApplyListResp{}
if !comm.ProtoUnmarshal(data, rsp) {
logrus.Error("unmarshal err")
return
}
this.itemListData = model.NewItemModelList()
for _, v := range rsp.List {
fm := &model.ItemModel{
Id: v.UserId,
Label: v.NickName,
}
this.itemListData.DataList = append(this.itemListData.DataList, fm)
}
this.reloadListData()
},
})
}