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