77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package model
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
|
|
"github.com/mattermost/focalboard/server/utils"
|
|
)
|
|
|
|
// BlockType represents a block type.
|
|
type BlockType string
|
|
|
|
const (
|
|
TypeUnknown = "unknown"
|
|
TypeBoard = "board"
|
|
TypeCard = "card"
|
|
TypeView = "view"
|
|
TypeText = "text"
|
|
TypeComment = "comment"
|
|
TypeImage = "image"
|
|
)
|
|
|
|
func (bt BlockType) String() string {
|
|
return string(bt)
|
|
}
|
|
|
|
// BlockTypeFromString returns an appropriate BlockType for the specified string.
|
|
func BlockTypeFromString(s string) (BlockType, error) {
|
|
switch strings.ToLower(s) {
|
|
case "board":
|
|
return TypeBoard, nil
|
|
case "card":
|
|
return TypeCard, nil
|
|
case "view":
|
|
return TypeView, nil
|
|
case "text":
|
|
return TypeText, nil
|
|
case "comment":
|
|
return TypeComment, nil
|
|
case "image":
|
|
return TypeImage, nil
|
|
}
|
|
return TypeUnknown, ErrInvalidBlockType{s}
|
|
}
|
|
|
|
// BlockType2IDType returns an appropriate IDType for the specified BlockType.
|
|
func BlockType2IDType(blockType BlockType) utils.IDType {
|
|
switch blockType {
|
|
case TypeBoard:
|
|
return utils.IDTypeBoard
|
|
case TypeCard:
|
|
return utils.IDTypeCard
|
|
case TypeView:
|
|
return utils.IDTypeView
|
|
case TypeText, TypeComment:
|
|
return utils.IDTypeBlock
|
|
}
|
|
return utils.IDTypeNone
|
|
}
|
|
|
|
// ErrInvalidBlockType is returned wherever an invalid block type was provided.
|
|
type ErrInvalidBlockType struct {
|
|
Type string
|
|
}
|
|
|
|
func (e ErrInvalidBlockType) Error() string {
|
|
return e.Type + " is an invalid block type."
|
|
}
|
|
|
|
// IsErrInvalidBlockType returns true if `err` is a IsErrInvalidBlockType or wraps one.
|
|
func IsErrInvalidBlockType(err error) bool {
|
|
var eibt *ErrInvalidBlockType
|
|
return errors.As(err, &eibt)
|
|
}
|