Ctrl K
ComunidadGuías…

bldr/desktop/tray/desktop-tray-entry-resource.go

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package desktop_tray

import (
	"context"

	"github.com/aperturerobotics/starpc/srpc"
)

// DesktopTrayEntryResource controls one registered desktop tray entry.
type DesktopTrayEntryResource struct {
	mux srpc.Invoker

	tray       *DesktopTray
	resourceID uint32
}

// NewDesktopTrayEntryResource creates a new DesktopTrayEntryResource.
func NewDesktopTrayEntryResource(tray *DesktopTray) *DesktopTrayEntryResource {
	// Register the entry resource service on a new SRPC mux.
	r := &DesktopTrayEntryResource{
		tray: tray,
	}
	mux := srpc.NewMux()
	_ = SRPCRegisterDesktopTrayEntryResourceService(mux, r)
	r.mux = mux
	return r
}

// GetMux returns the rpc mux.
func (r *DesktopTrayEntryResource) GetMux() srpc.Invoker {
	return r.mux
}

// GetResourceID returns the owning resource id.
func (r *DesktopTrayEntryResource) GetResourceID() uint32 {
	return r.resourceID
}

// SetResourceID sets the owning resource id.
func (r *DesktopTrayEntryResource) SetResourceID(resourceID uint32) {
	r.resourceID = resourceID
}

// SetDesktopTrayEntry replaces the registered entry.
func (r *DesktopTrayEntryResource) SetDesktopTrayEntry(
	ctx context.Context,
	req *SetDesktopTrayEntryRequest,
) (*SetDesktopTrayEntryResponse, error) {
	// Validate and apply the replacement entry.
	entry := req.GetEntry()
	if entry == nil {
		return nil, ErrDesktopTrayEntryRequired
	}
	if entry.GetId() == "" {
		return nil, ErrDesktopTrayEntryIdRequired
	}
	err := r.tray.setEntry(r.resourceID, entry)
	if err != nil {
		return nil, err
	}
	return &SetDesktopTrayEntryResponse{}, nil
}

// SetDesktopTrayEntryActive updates the entry active flag.
func (r *DesktopTrayEntryResource) SetDesktopTrayEntryActive(
	ctx context.Context,
	req *SetDesktopTrayEntryActiveRequest,
) (*SetDesktopTrayEntryActiveResponse, error) {
	err := r.tray.setActive(r.resourceID, req.GetActive())
	if err != nil {
		return nil, err
	}
	return &SetDesktopTrayEntryActiveResponse{}, nil
}

// SetDesktopTrayEntryEnabled updates the entry enabled flag.
func (r *DesktopTrayEntryResource) SetDesktopTrayEntryEnabled(
	ctx context.Context,
	req *SetDesktopTrayEntryEnabledRequest,
) (*SetDesktopTrayEntryEnabledResponse, error) {
	err := r.tray.setEnabled(r.resourceID, req.GetEnabled())
	if err != nil {
		return nil, err
	}
	return &SetDesktopTrayEntryEnabledResponse{}, nil
}

// _ is a type assertion
var _ SRPCDesktopTrayEntryResourceServiceServer = (*DesktopTrayEntryResource)(nil)