Rewrite chat actor information for federation.

This commit is contained in:
Joachim Bauch 2025-09-29 10:56:03 +02:00
commit 63b658574a
No known key found for this signature in database
GPG key ID: 77C1D22D53E15F02
5 changed files with 202 additions and 27 deletions

View file

@ -24,6 +24,15 @@ package api
// StringMap maps string keys to arbitrary values.
type StringMap map[string]any
func (m StringMap) GetStringMap(key string) (StringMap, bool) {
v, found := m[key]
if !found {
return nil, false
}
return ConvertStringMap(v)
}
func ConvertStringMap(ob any) (StringMap, bool) {
if ob == nil {
return nil, true

View file

@ -88,3 +88,28 @@ func TestGetStringMapString(t *testing.T) {
_, ok = GetStringMapString[StringMapTestString](m, "invalid")
assert.False(ok)
}
func TestGetStringMapStringMap(t *testing.T) {
assert := assert.New(t)
m := StringMap{
"foo": map[string]any{
"bar": 1,
},
"bar": StringMap{
"baz": 2,
},
}
if v, ok := m.GetStringMap("foo"); assert.True(ok) {
assert.EqualValues(map[string]any{
"bar": 1,
}, v)
}
if v, ok := m.GetStringMap("bar"); assert.True(ok) {
assert.EqualValues(map[string]any{
"baz": 2,
}, v)
}
v, ok := m.GetStringMap("baz")
assert.False(ok, "expected missing entry, got %+v", v)
}