Files
2026-11-08 03:46:11 +00:00

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}
}