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