94 lines
2.3 KiB
Go
94 lines
2.3 KiB
Go
package share
|
|
|
|
import (
|
|
"git.entityseven.com/rilaxik/pllist/internal/domain"
|
|
"git.entityseven.com/rilaxik/pllist/internal/telegram/shared"
|
|
)
|
|
|
|
const (
|
|
callbackAdd = shared.ActionShareAdd
|
|
callbackRole = shared.ActionShareRole
|
|
callbackView = shared.ActionShareView
|
|
callbackSet = shared.ActionShareSet
|
|
callbackRevoke = shared.ActionShareRevoke
|
|
callbackRevokeYes = shared.ActionShareRevokeYes
|
|
)
|
|
|
|
type shareRef struct {
|
|
listID int64
|
|
shareID int64
|
|
pending bool
|
|
}
|
|
|
|
func addData(listID int64) string {
|
|
return shared.ShareAddData(listID)
|
|
}
|
|
|
|
func roleData(listID int64, role domain.Role) string {
|
|
return shared.ShareRoleData(listID, role)
|
|
}
|
|
|
|
func viewData(listID, shareID int64, pending bool) string {
|
|
return shared.ShareViewData(shareRefData(listID, shareID, pending))
|
|
}
|
|
|
|
func setData(listID, shareID int64, pending bool, role domain.Role) string {
|
|
return shared.ShareSetData(shareRefData(listID, shareID, pending), role)
|
|
}
|
|
|
|
func revokeData(listID, shareID int64, pending bool) string {
|
|
return shared.ShareRevokeData(shareRefData(listID, shareID, pending))
|
|
}
|
|
|
|
func revokeYesData(listID, shareID int64, pending bool) string {
|
|
return shared.ShareRevokeYesData(shareRefData(listID, shareID, pending))
|
|
}
|
|
|
|
func parseAdd(data string) (int64, error) {
|
|
return shared.CallbackID(data, callbackAdd)
|
|
}
|
|
|
|
func parseRole(data string) (int64, domain.Role, error) {
|
|
return shared.ParseShareRole(data)
|
|
}
|
|
|
|
func parseView(data string) (shareRef, error) {
|
|
return parseRef(data, callbackView)
|
|
}
|
|
|
|
func parseSet(data string) (shareRef, domain.Role, error) {
|
|
ref, role, err := shared.ParseShareSet(data)
|
|
if err != nil {
|
|
return shareRef{}, "", err
|
|
}
|
|
return shareRef{
|
|
listID: ref.ListID,
|
|
shareID: ref.ShareID,
|
|
pending: ref.Pending,
|
|
}, role, nil
|
|
}
|
|
|
|
func parseRevoke(data string) (shareRef, error) {
|
|
return parseRef(data, callbackRevoke)
|
|
}
|
|
|
|
func parseRevokeYes(data string) (shareRef, error) {
|
|
return parseRef(data, callbackRevokeYes)
|
|
}
|
|
|
|
func parseRef(data string, action shared.CallbackAction) (shareRef, error) {
|
|
ref, err := shared.ParseShareRef(data, action)
|
|
if err != nil {
|
|
return shareRef{}, err
|
|
}
|
|
return shareRef{
|
|
listID: ref.ListID,
|
|
shareID: ref.ShareID,
|
|
pending: ref.Pending,
|
|
}, nil
|
|
}
|
|
|
|
func shareRefData(listID, shareID int64, pending bool) shared.ShareRef {
|
|
return shared.ShareRef{ListID: listID, ShareID: shareID, Pending: pending}
|
|
}
|