common

package
v0.45.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 13, 2024 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Common functions, constants, and structures package for the frontend.

Index

Constants

View Source
const (
	// Flow/Posts-related error messages.
	ERR_INVALID_REPLY      = "no valid reply content entered"
	ERR_POST_UNAUTH_DELETE = "you can delete your own posts only!"
	ERR_POST_NOT_FOUND     = "post not found"
	ERR_USER_NOT_FOUND     = "user not found"
	ERR_PRIVATE_ACC        = "this account is private"

	// Generic error messages on the FE.
	ERR_CANNOT_REACH_BE = "cannot reach the server"
	ERR_CANNOT_GET_DATA = "cannot get the data"
	ERR_LOGIN_AGAIN     = "please log-in again"

	// Login-related error messages.
	MSG_USER_ACTIVATED          = "user successfully activated, try logging in"
	ERR_ALL_FIELDS_REQUIRED     = "all fields are required"
	ERR_LOGIN_CHARS_LIMIT       = "only a-z, A-Z characters and numbers can be used"
	ERR_ACCESS_DENIED           = "wrong credentials entered"
	ERR_LOCAL_STORAGE_USER_FAIL = "cannot save user's data to the browser"
	ERR_ACTIVATION_INVALID_UUID = "invalid activation UUID"
	ERR_ACTIVATION_EXPIRED_UUID = "expired activation UUID"

	// Notification-related (non-)error messages.
	MSG_SUBSCRIPTION_UPDATED      = "subscription updated"
	MSG_UNSUBSCRIBED_SUCCESS      = "successfully unsubscribed, notifications off"
	ERR_SUBSCRIPTION_UPDATE_FAIL  = "failed to update the subscription, try again later"
	ERR_NOTIF_PERMISSION_DENIED   = "notification permission denied by user"
	ERR_NOTIF_UNSUPPORTED_BROWSER = "notifications are not supported in this browser"

	// Polls-related (non-)error messages.
	MSG_NO_POLL_TO_SHOW      = "no poll to show, click here to create one!"
	ERR_POLL_UNAUTH_DELETE   = "you can delete your own polls only!"
	ERR_POLL_OPTION_MISMATCH = "such option is not associated to the poll"

	// Post-related (non-)error messages.
	MSG_IMAGE_READY             = "image is ready for the upload"
	ERR_LOCAL_STORAGE_LOAD_FAIL = "cannot decode user's data: "
	ERR_POST_TEXTAREA_EMPTY     = "no valid content entered"
	ERR_POLL_FIELDS_REQUIRED    = "poll question and at least two options are required"
	ERR_POST_UNKNOWN_TYPE       = "unknown post type"

	// Register-related error messages.
	ERR_REGISTER_FIELDS_REQUIRED = "all fields are required"
	ERR_REGISTER_CHARSET_LIMIT   = "only a-z, A-Z characters and numbers can be used"
	ERR_WRONG_EMAIL_FORMAT       = "invalid e-mail address format entered"

	// Reset-related (non-)error messages.
	MSG_RESET_PASSPHRASE_SUCCESS = "your passphrase has been changed, check your mail inbox"
	MSG_RESET_REQUEST_SUCCESS    = "the passphrase reset request has been sent, check your mail inbox"
	ERR_RESET_FIELD_REQUIRED     = "e-mail address is required"
	ERR_RESET_UUID_FIELD_EMPTY   = "UUID string is required to continue, check your mail inbox"
	ERR_RESET_INVALID_INPUT_DATA = "invalid input data entered"

	// Settings-related (non-)error messages.
	MSG_PASSPHRASE_UPDATED       = "passphrase updated successfully"
	MSG_ABOUT_TEXT_UPDATED       = "about text updated successfully"
	MSG_WEBSITE_UPDATED          = "website updated successfully"
	MSG_SUBSCRIPTION_REQ_SUCCESS = "successfully subscribed to notifs"
	MSG_LOCAL_TIME_TOGGLE        = "local time mode toggled"
	MSG_PRIVATE_MODE_TOGGLE      = "private mode toggled"
	MSG_AVATAR_CHANGE_SUCCESS    = "avatar updated successfully"
	ERR_PASSPHRASE_MISMATCH      = "passphrases do not match"
	ERR_PASSPHRASE_MISSING       = "passphrase fields need to be filled"
	ERR_ABOUT_TEXT_UNCHANGED     = "the about textarea is empty, or the text has not changed"
	ERR_ABOUT_TEXT_CHAR_LIMIT    = "about text has to be shorter than 100 chars"
	ERR_WEBSITE_UNCHANGED        = "website URL has to be filled, or changed"
	ERR_WEBSITE_REGEXP_FAIL      = "failed to check the website format (regexp object failed)"
	ERR_WEBSITE_INVALID          = "website prolly not a valid URL"
	ERR_SUBSCRIPTION_BLANK_UUID  = "blank UUID string"
	ERR_SUBSCRIPTION_REQ_FAIL    = "failed to subscribe to notifications: "

	// Users-related (non-)error messages.
	MSG_USER_UPDATED_SUCCESS   = "user has been updated, request was removed"
	MSG_FOLLOW_REQUEST_REMOVED = "user has been updated, request was removed"
	MSG_REQ_TO_FOLLOW_SUCCESS  = "request to follow sent successfully"
	MSG_SHADE_SUCCESSFUL       = "user (un)shaded successfully"
)
View Source
const (
	GENERIC_TOAST_NAME    = "snackbar-general-bottom"
	GENERIC_TOAST_LINK    = "snackbar-general-bottom-link"
	GENERIC_TOAST_TIMEOUT = 5000
	DISMISS_LOCK          = "dismissLock"
)
View Source
const (
	JS_LITTR_SSE   = "littrServiceSSE"
	JS_LITTR_EVENT = "littrEventSSE"
)
View Source
const (
	// Toast type error = red10.
	TTYPE_ERR = "error"

	// Toast type info = blue10.
	TTYPE_INFO = "info"

	// Toast type success = green10.
	TTYPE_SUCCESS = "success"
)

Variables

View Source
var (
	// Those vars are used during the build --- linker (ld) bakes the values in.
	AppVersion     string
	AppPepper      string
	VapidPublicKey string
)
View Source
var DefaultRequestInit = map[string]interface{}{

	"body": nil,

	"cache": "default",

	"credentials":    "same-origin",
	"headers":        map[string]interface{}{},
	"keepalive":      false,
	"method":         "GET",
	"mode":           "cors",
	"priority":       "auto",
	"redirect":       "follow",
	"referrer":       "about:client",
	"referrerPolicy": "",
	"signal":         nil,
	"url":            "",
}

RequestInit object. Usable map for export to JSValue via app.ValueOf(x)

View Source
var ToastColor = func(ttype string) string {
	switch ttype {

	case TTYPE_SUCCESS:
		return "green10"

	case TTYPE_ERR:
		return "red10"

	case TTYPE_INFO:
	default:
		return "blue10"
	}

	return "blue10"
}

ToastColor is a helper function reference to define the colour palette for such toast types.

Functions

func Fetch added in v0.44.40

func Fetch(input *map[string]interface{}) (*string, int, error)

Fetch is a raw implementation of http.Client to omit the `net/*` packages completely. The main purpose is to further optimize the disk and memory space needed by the WASM app client.

func FetchData added in v0.42.0

func FetchData(input *CallInput, output *Response) bool

FetchData is a metafunction for input options conversion for the main, lighter Fetch() function.

func FetchSSE added in v0.44.40

func FetchSSE(ch chan string)

FetchSSE is an early implementation of the SSE client using only await fetch() as the base function.

func LoadUser added in v0.41.8

func LoadUser(user *models.User, ctx *app.Context) error

LoadUser uses the app.Context pointer to load the encoded user string from the LocalStorage to decode it back to the models.User struct.

func LoadUser2 added in v0.44.10

func LoadUser2(encoded string, user *models.User) error

func ReadFile added in v0.41.2

func ReadFile(file app.Value) (data []byte, err error)

func SaveUser added in v0.41.8

func SaveUser(user *models.User, ctx *app.Context) error

SaveUser uses the app.Context pointer to save the given pointer to models.User and encode it into a JSON string.

func SaveUser2 added in v0.44.10

func SaveUser2(plain *string, user *models.User) error

func ShowGenericToast added in v0.44.41

func ShowGenericToast(pl *ToastPayload)

ShowGenericToast is a helper function to show requested toast/snackbar. At the moment, the concept is that there are two nodes loaded in DOM (top and bottom toast/snack) to show common response (top), or system alerts (bottom).

Types

type CallInput

type CallInput struct {
	Method      string
	Url         string
	CallerID    string
	PageNo      int
	HideReplies bool

	// Payload body for the API call.
	Data interface{}
}

DTO-in structure for the API call.

type Event added in v0.44.40

type Event struct {
	LastEventID string
	Type        string
	Data        string
}

func NewSSEEvent added in v0.44.40

func NewSSEEvent(input string) *Event

func (*Event) Dump added in v0.44.40

func (e *Event) Dump() string

func (*Event) ParseEventData added in v0.44.40

func (e *Event) ParseEventData(user *models.User) (string, string, bool)

type Response added in v0.42.0

type Response struct {
	Code      int
	Error     error
	Message   string `json:"message"`
	Timestamp int64  `json:"timestamp"`

	// Custom Data field per the app component. Must be referenced via the inner pointer too when the output is required.
	//
	//   Example:
	//   output := &common.Response{&model.User}
	//
	Data interface{} `json:"data"`
}

Standardized common response from API.

type Toast added in v0.41.1

type Toast struct {
	// AppContext is a pointer reference to the application context.
	AppContext *app.Context

	// TLink is a field to hold the hypertext link.
	TLink string

	// TText is a filed to hold the very text message to display.
	TText string

	// TType defines the message type (error, info, success).
	TType string

	// TID is a filed to hold the toast's UUID.
	TID int64
}

func (*Toast) Context added in v0.41.1

func (t *Toast) Context(ctx *app.Context) *Toast

Context sets the application context pointer reference. Returns itself.

func (*Toast) Dispatch added in v0.41.1

func (t *Toast) Dispatch(...interface{})

Dispatch is a wrapper funtion that wraps the function ShowGenericToast() from pkg/frontend/common/snack.go

func (t *Toast) Link(link string) *Toast

Link sets the string input as the TLink content. Returns itself.

func (*Toast) Text added in v0.41.1

func (t *Toast) Text(text string) *Toast

Text sets the string input as the TText content. Returns itself.

func (*Toast) Type added in v0.41.1

func (t *Toast) Type(typ string) *Toast

Type sets the string input as the TType content. Returns itself.

type ToastInterface added in v0.41.1

type ToastInterface interface {
	// Context method sets the application context pointer reference.
	Context(*app.Context) *Toast

	// Text method write the input string to the TText field.
	Text(string) *Toast

	// Link method writes the input string to the TLink field.
	Link(string) *Toast

	// Type method writes the input string to the TType field.
	Type(string) *Toast

	// SetPrefix method enables to set the logging prefix. Can be removed afterwards.
	SetPrefix(string) *Toast

	// RemovePrefix method removes the previously added logging prefix.
	RemovePrefix() *Toast

	// Dispatch sends the instance itself to the Content type of a view. This method is the final one.
	Dispatch(interface{}, func(*Toast, interface{}))
}

type ToastPayload added in v0.44.46

type ToastPayload struct {
	// Required ones.
	Name string
	Text string

	// Default: blue10.
	Color string

	// Optionals.
	Link string
	Keep bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL