You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
377 lines
8.2 KiB
377 lines
8.2 KiB
// Code generated by gotdgen, DO NOT EDIT. |
|
|
|
package tg |
|
|
|
import ( |
|
"context" |
|
"errors" |
|
"fmt" |
|
"sort" |
|
"strings" |
|
|
|
"go.uber.org/multierr" |
|
|
|
"github.com/gotd/td/bin" |
|
"github.com/gotd/td/tdjson" |
|
"github.com/gotd/td/tdp" |
|
"github.com/gotd/td/tgerr" |
|
) |
|
|
|
// No-op definition for keeping imports. |
|
var ( |
|
_ = bin.Buffer{} |
|
_ = context.Background() |
|
_ = fmt.Stringer(nil) |
|
_ = strings.Builder{} |
|
_ = errors.Is |
|
_ = multierr.AppendInto |
|
_ = sort.Ints |
|
_ = tdp.Format |
|
_ = tgerr.Error{} |
|
_ = tdjson.Encoder{} |
|
) |
|
|
|
// Folder represents TL type `folder#ff544e65`. |
|
// Folder |
|
// |
|
// See https://core.telegram.org/constructor/folder for reference. |
|
type Folder struct { |
|
// Flags, see TL conditional fields¹ |
|
// |
|
// Links: |
|
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields |
|
Flags bin.Fields |
|
// Automatically add new channels to this folder |
|
AutofillNewBroadcasts bool |
|
// Automatically add joined new public supergroups to this folder |
|
AutofillPublicGroups bool |
|
// Automatically add new private chats to this folder |
|
AutofillNewCorrespondents bool |
|
// Folder ID |
|
ID int |
|
// Folder title |
|
Title string |
|
// Folder picture |
|
// |
|
// Use SetPhoto and GetPhoto helpers. |
|
Photo ChatPhotoClass |
|
} |
|
|
|
// FolderTypeID is TL type id of Folder. |
|
const FolderTypeID = 0xff544e65 |
|
|
|
// Ensuring interfaces in compile-time for Folder. |
|
var ( |
|
_ bin.Encoder = &Folder{} |
|
_ bin.Decoder = &Folder{} |
|
_ bin.BareEncoder = &Folder{} |
|
_ bin.BareDecoder = &Folder{} |
|
) |
|
|
|
func (f *Folder) Zero() bool { |
|
if f == nil { |
|
return true |
|
} |
|
if !(f.Flags.Zero()) { |
|
return false |
|
} |
|
if !(f.AutofillNewBroadcasts == false) { |
|
return false |
|
} |
|
if !(f.AutofillPublicGroups == false) { |
|
return false |
|
} |
|
if !(f.AutofillNewCorrespondents == false) { |
|
return false |
|
} |
|
if !(f.ID == 0) { |
|
return false |
|
} |
|
if !(f.Title == "") { |
|
return false |
|
} |
|
if !(f.Photo == nil) { |
|
return false |
|
} |
|
|
|
return true |
|
} |
|
|
|
// String implements fmt.Stringer. |
|
func (f *Folder) String() string { |
|
if f == nil { |
|
return "Folder(nil)" |
|
} |
|
type Alias Folder |
|
return fmt.Sprintf("Folder%+v", Alias(*f)) |
|
} |
|
|
|
// FillFrom fills Folder from given interface. |
|
func (f *Folder) FillFrom(from interface { |
|
GetAutofillNewBroadcasts() (value bool) |
|
GetAutofillPublicGroups() (value bool) |
|
GetAutofillNewCorrespondents() (value bool) |
|
GetID() (value int) |
|
GetTitle() (value string) |
|
GetPhoto() (value ChatPhotoClass, ok bool) |
|
}) { |
|
f.AutofillNewBroadcasts = from.GetAutofillNewBroadcasts() |
|
f.AutofillPublicGroups = from.GetAutofillPublicGroups() |
|
f.AutofillNewCorrespondents = from.GetAutofillNewCorrespondents() |
|
f.ID = from.GetID() |
|
f.Title = from.GetTitle() |
|
if val, ok := from.GetPhoto(); ok { |
|
f.Photo = val |
|
} |
|
|
|
} |
|
|
|
// TypeID returns type id in TL schema. |
|
// |
|
// See https://core.telegram.org/mtproto/TL-tl#remarks. |
|
func (*Folder) TypeID() uint32 { |
|
return FolderTypeID |
|
} |
|
|
|
// TypeName returns name of type in TL schema. |
|
func (*Folder) TypeName() string { |
|
return "folder" |
|
} |
|
|
|
// TypeInfo returns info about TL type. |
|
func (f *Folder) TypeInfo() tdp.Type { |
|
typ := tdp.Type{ |
|
Name: "folder", |
|
ID: FolderTypeID, |
|
} |
|
if f == nil { |
|
typ.Null = true |
|
return typ |
|
} |
|
typ.Fields = []tdp.Field{ |
|
{ |
|
Name: "AutofillNewBroadcasts", |
|
SchemaName: "autofill_new_broadcasts", |
|
Null: !f.Flags.Has(0), |
|
}, |
|
{ |
|
Name: "AutofillPublicGroups", |
|
SchemaName: "autofill_public_groups", |
|
Null: !f.Flags.Has(1), |
|
}, |
|
{ |
|
Name: "AutofillNewCorrespondents", |
|
SchemaName: "autofill_new_correspondents", |
|
Null: !f.Flags.Has(2), |
|
}, |
|
{ |
|
Name: "ID", |
|
SchemaName: "id", |
|
}, |
|
{ |
|
Name: "Title", |
|
SchemaName: "title", |
|
}, |
|
{ |
|
Name: "Photo", |
|
SchemaName: "photo", |
|
Null: !f.Flags.Has(3), |
|
}, |
|
} |
|
return typ |
|
} |
|
|
|
// SetFlags sets flags for non-zero fields. |
|
func (f *Folder) SetFlags() { |
|
if !(f.AutofillNewBroadcasts == false) { |
|
f.Flags.Set(0) |
|
} |
|
if !(f.AutofillPublicGroups == false) { |
|
f.Flags.Set(1) |
|
} |
|
if !(f.AutofillNewCorrespondents == false) { |
|
f.Flags.Set(2) |
|
} |
|
if !(f.Photo == nil) { |
|
f.Flags.Set(3) |
|
} |
|
} |
|
|
|
// Encode implements bin.Encoder. |
|
func (f *Folder) Encode(b *bin.Buffer) error { |
|
if f == nil { |
|
return fmt.Errorf("can't encode folder#ff544e65 as nil") |
|
} |
|
b.PutID(FolderTypeID) |
|
return f.EncodeBare(b) |
|
} |
|
|
|
// EncodeBare implements bin.BareEncoder. |
|
func (f *Folder) EncodeBare(b *bin.Buffer) error { |
|
if f == nil { |
|
return fmt.Errorf("can't encode folder#ff544e65 as nil") |
|
} |
|
f.SetFlags() |
|
if err := f.Flags.Encode(b); err != nil { |
|
return fmt.Errorf("unable to encode folder#ff544e65: field flags: %w", err) |
|
} |
|
b.PutInt(f.ID) |
|
b.PutString(f.Title) |
|
if f.Flags.Has(3) { |
|
if f.Photo == nil { |
|
return fmt.Errorf("unable to encode folder#ff544e65: field photo is nil") |
|
} |
|
if err := f.Photo.Encode(b); err != nil { |
|
return fmt.Errorf("unable to encode folder#ff544e65: field photo: %w", err) |
|
} |
|
} |
|
return nil |
|
} |
|
|
|
// Decode implements bin.Decoder. |
|
func (f *Folder) Decode(b *bin.Buffer) error { |
|
if f == nil { |
|
return fmt.Errorf("can't decode folder#ff544e65 to nil") |
|
} |
|
if err := b.ConsumeID(FolderTypeID); err != nil { |
|
return fmt.Errorf("unable to decode folder#ff544e65: %w", err) |
|
} |
|
return f.DecodeBare(b) |
|
} |
|
|
|
// DecodeBare implements bin.BareDecoder. |
|
func (f *Folder) DecodeBare(b *bin.Buffer) error { |
|
if f == nil { |
|
return fmt.Errorf("can't decode folder#ff544e65 to nil") |
|
} |
|
{ |
|
if err := f.Flags.Decode(b); err != nil { |
|
return fmt.Errorf("unable to decode folder#ff544e65: field flags: %w", err) |
|
} |
|
} |
|
f.AutofillNewBroadcasts = f.Flags.Has(0) |
|
f.AutofillPublicGroups = f.Flags.Has(1) |
|
f.AutofillNewCorrespondents = f.Flags.Has(2) |
|
{ |
|
value, err := b.Int() |
|
if err != nil { |
|
return fmt.Errorf("unable to decode folder#ff544e65: field id: %w", err) |
|
} |
|
f.ID = value |
|
} |
|
{ |
|
value, err := b.String() |
|
if err != nil { |
|
return fmt.Errorf("unable to decode folder#ff544e65: field title: %w", err) |
|
} |
|
f.Title = value |
|
} |
|
if f.Flags.Has(3) { |
|
value, err := DecodeChatPhoto(b) |
|
if err != nil { |
|
return fmt.Errorf("unable to decode folder#ff544e65: field photo: %w", err) |
|
} |
|
f.Photo = value |
|
} |
|
return nil |
|
} |
|
|
|
// SetAutofillNewBroadcasts sets value of AutofillNewBroadcasts conditional field. |
|
func (f *Folder) SetAutofillNewBroadcasts(value bool) { |
|
if value { |
|
f.Flags.Set(0) |
|
f.AutofillNewBroadcasts = true |
|
} else { |
|
f.Flags.Unset(0) |
|
f.AutofillNewBroadcasts = false |
|
} |
|
} |
|
|
|
// GetAutofillNewBroadcasts returns value of AutofillNewBroadcasts conditional field. |
|
func (f *Folder) GetAutofillNewBroadcasts() (value bool) { |
|
if f == nil { |
|
return |
|
} |
|
return f.Flags.Has(0) |
|
} |
|
|
|
// SetAutofillPublicGroups sets value of AutofillPublicGroups conditional field. |
|
func (f *Folder) SetAutofillPublicGroups(value bool) { |
|
if value { |
|
f.Flags.Set(1) |
|
f.AutofillPublicGroups = true |
|
} else { |
|
f.Flags.Unset(1) |
|
f.AutofillPublicGroups = false |
|
} |
|
} |
|
|
|
// GetAutofillPublicGroups returns value of AutofillPublicGroups conditional field. |
|
func (f *Folder) GetAutofillPublicGroups() (value bool) { |
|
if f == nil { |
|
return |
|
} |
|
return f.Flags.Has(1) |
|
} |
|
|
|
// SetAutofillNewCorrespondents sets value of AutofillNewCorrespondents conditional field. |
|
func (f *Folder) SetAutofillNewCorrespondents(value bool) { |
|
if value { |
|
f.Flags.Set(2) |
|
f.AutofillNewCorrespondents = true |
|
} else { |
|
f.Flags.Unset(2) |
|
f.AutofillNewCorrespondents = false |
|
} |
|
} |
|
|
|
// GetAutofillNewCorrespondents returns value of AutofillNewCorrespondents conditional field. |
|
func (f *Folder) GetAutofillNewCorrespondents() (value bool) { |
|
if f == nil { |
|
return |
|
} |
|
return f.Flags.Has(2) |
|
} |
|
|
|
// GetID returns value of ID field. |
|
func (f *Folder) GetID() (value int) { |
|
if f == nil { |
|
return |
|
} |
|
return f.ID |
|
} |
|
|
|
// GetTitle returns value of Title field. |
|
func (f *Folder) GetTitle() (value string) { |
|
if f == nil { |
|
return |
|
} |
|
return f.Title |
|
} |
|
|
|
// SetPhoto sets value of Photo conditional field. |
|
func (f *Folder) SetPhoto(value ChatPhotoClass) { |
|
f.Flags.Set(3) |
|
f.Photo = value |
|
} |
|
|
|
// GetPhoto returns value of Photo conditional field and |
|
// boolean which is true if field was set. |
|
func (f *Folder) GetPhoto() (value ChatPhotoClass, ok bool) { |
|
if f == nil { |
|
return |
|
} |
|
if !f.Flags.Has(3) { |
|
return value, false |
|
} |
|
return f.Photo, true |
|
} |
|
|
|
// GetPhotoAsNotEmpty returns mapped value of Photo conditional field and |
|
// boolean which is true if field was set. |
|
func (f *Folder) GetPhotoAsNotEmpty() (*ChatPhoto, bool) { |
|
if value, ok := f.GetPhoto(); ok { |
|
return value.AsNotEmpty() |
|
} |
|
return nil, false |
|
}
|
|
|