Skip to content
Snippets Groups Projects
Unverified Commit f4f9222e authored by Sumner Evans's avatar Sumner Evans
Browse files

config: add and use displayname tamplate

parent 09943464
No related branches found
No related tags found
No related merge requests found
Pipeline #16450 passed
...@@ -281,7 +281,10 @@ func (l *LinkedInClient) getAvatar(img *types.VectorImage) (avatar bridgev2.Avat ...@@ -281,7 +281,10 @@ func (l *LinkedInClient) getAvatar(img *types.VectorImage) (avatar bridgev2.Avat
} }
func (l *LinkedInClient) getMessagingParticipantUserInfo(participant types.MessagingParticipant) (ui bridgev2.UserInfo) { func (l *LinkedInClient) getMessagingParticipantUserInfo(participant types.MessagingParticipant) (ui bridgev2.UserInfo) {
ui.Name = ptr.Ptr(fmt.Sprintf("%s %s", participant.ParticipantType.Member.FirstName.Text, participant.ParticipantType.Member.LastName.Text)) // TODO use a displayname template ui.Name = ptr.Ptr(l.main.Config.FormatDisplayname(DisplaynameParams{
FirstName: participant.ParticipantType.Member.FirstName.Text,
LastName: participant.ParticipantType.Member.LastName.Text,
}))
ui.Avatar = ptr.Ptr(l.getAvatar(participant.ParticipantType.Member.ProfilePicture)) ui.Avatar = ptr.Ptr(l.getAvatar(participant.ParticipantType.Member.ProfilePicture))
ui.Identifiers = []string{fmt.Sprintf("linkedin:%s", participant.EntityURN.ID())} ui.Identifiers = []string{fmt.Sprintf("linkedin:%s", participant.EntityURN.ID())}
return return
......
...@@ -18,21 +18,51 @@ package connector ...@@ -18,21 +18,51 @@ package connector
import ( import (
_ "embed" _ "embed"
"strings"
"text/template"
up "go.mau.fi/util/configupgrade" up "go.mau.fi/util/configupgrade"
"gopkg.in/yaml.v3"
) )
type LinkedInConfig struct{}
//go:embed example-config.yaml //go:embed example-config.yaml
var ExampleConfig string var ExampleConfig string
type Config struct {
DisplaynameTemplate string `yaml:"displayname_template"`
displaynameTemplate *template.Template `yaml:"-"`
}
type umConfig Config
func (c *Config) UnmarshalYAML(node *yaml.Node) error {
err := node.Decode((*umConfig)(c))
if err != nil {
return err
}
return c.PostProcess()
}
func (c *Config) PostProcess() (err error) {
c.displaynameTemplate, err = template.New("displayname").Parse(c.DisplaynameTemplate)
return
}
func upgradeConfig(helper up.Helper) { func upgradeConfig(helper up.Helper) {
helper.Copy(up.Str, "displayname_template")
} }
func (lc *LinkedInConnector) GetConfig() (string, any, up.Upgrader) { func (lc *LinkedInConnector) GetConfig() (string, any, up.Upgrader) {
return ExampleConfig, &lc.Config, &up.StructUpgrader{ return ExampleConfig, &lc.Config, up.SimpleUpgrader(upgradeConfig)
SimpleUpgrader: up.SimpleUpgrader(upgradeConfig), }
Base: ExampleConfig,
} type DisplaynameParams struct {
FirstName string
LastName string
}
func (c *Config) FormatDisplayname(params DisplaynameParams) string {
var buffer strings.Builder
_ = c.displaynameTemplate.Execute(&buffer, params)
return buffer.String()
} }
...@@ -24,7 +24,7 @@ import ( ...@@ -24,7 +24,7 @@ import (
type LinkedInConnector struct { type LinkedInConnector struct {
Bridge *bridgev2.Bridge Bridge *bridgev2.Bridge
Config LinkedInConfig Config Config
} }
var _ bridgev2.NetworkConnector = (*LinkedInConnector)(nil) var _ bridgev2.NetworkConnector = (*LinkedInConnector)(nil)
......
# Displayname template for LinkedIn users.
# .FirstName is replaced with the first name
# .LastName is replaced with the last name
displayname_template: "{{ .FirstName }} {{ .LastName }} (LinkedIn)"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment