Shared channels plugin APIs for MS Teams plugin (#25805)

New plugin APIs and hooks for accessing Shared Channels service via plugin. 

- RegisterPluginForSharedChannels(opts model.RegisterPluginOpts) (remoteID string, err error)
- UnregisterPluginForSharedChannels(pluginID string) error
- ShareChannel(sc *model.SharedChannel) (*model.SharedChannel, error)
- UpdateSharedChannel(sc *model.SharedChannel) (*model.SharedChannel, error)
- UnshareChannel(channelID string) (unshared bool, err error)
- UpdateSharedChannelCursor(channelID, remoteID string, cusror model.GetPostsSinceForSyncCursor) error
- SyncSharedChannel(channelID string) error
- InviteRemoteToChannel(channelID string, remoteID string, userID string) error
- UninviteRemoteFromChannel(channelID string, remoteID string) error

Hooks
- OnSharedChannelsSyncMsg(msg *model.SyncMsg, rc *model.RemoteCluster) (model.SyncResponse, error)
- OnSharedChannelsPing(rc *model.RemoteCluster) bool
Этот коммит содержится в:
Doug Lauder
2023-12-22 17:00:27 -05:00
коммит произвёл GitHub
родитель 0f3553c8ab
Коммит 2d1135ca46
40 изменённых файлов: 1725 добавлений и 168 удалений

Просмотреть файл

@@ -82,9 +82,10 @@ func TestBroadcastMsg(t *testing.T) {
}))
defer ts.Close()
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL))
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL, false))
mockApp := newMockApp(t, nil)
service, err := NewRemoteClusterService(mockServer)
service, err := NewRemoteClusterService(mockServer, mockApp)
require.NoError(t, err)
err = service.Start()
@@ -138,9 +139,10 @@ func TestBroadcastMsg(t *testing.T) {
}))
defer ts.Close()
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL))
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL, false))
mockApp := newMockApp(t, nil)
service, err := NewRemoteClusterService(mockServer)
service, err := NewRemoteClusterService(mockServer, mockApp)
require.NoError(t, err)
err = service.Start()
@@ -169,10 +171,13 @@ func TestBroadcastMsg(t *testing.T) {
})
}
func makeRemoteClusters(num int, siteURL string) []*model.RemoteCluster {
func makeRemoteClusters(num int, siteURL string, isPlugin bool) []*model.RemoteCluster {
var remotes []*model.RemoteCluster
for i := 0; i < num; i++ {
rc := makeRemoteCluster(fmt.Sprintf("test cluster %d", i+1), siteURL, TestTopics)
if isPlugin {
rc.PluginID = model.NewId()
}
remotes = append(remotes, rc)
}
return remotes