MM-56147 Add GetPreferenceForUser plugin API (#25704)
* MM-56147 Add GetPreferenceForUser plugin API * Change return type to non-pointer for preference consistency * Fix merge
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
edc305716f
Коммит
59549653a7
@@ -270,6 +270,15 @@ func (api *PluginAPI) GetUsersInTeam(teamID string, page int, perPage int) ([]*m
|
|||||||
return api.app.GetUsersInTeam(options)
|
return api.app.GetUsersInTeam(options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (api *PluginAPI) GetPreferenceForUser(userID, category, name string) (model.Preference, *model.AppError) {
|
||||||
|
pref, err := api.app.GetPreferenceByCategoryAndNameForUser(api.ctx, userID, category, name)
|
||||||
|
if err != nil {
|
||||||
|
return model.Preference{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return *pref, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (api *PluginAPI) GetPreferencesForUser(userID string) ([]model.Preference, *model.AppError) {
|
func (api *PluginAPI) GetPreferencesForUser(userID string) ([]model.Preference, *model.AppError) {
|
||||||
return api.app.GetPreferencesForUser(api.ctx, userID)
|
return api.app.GetPreferencesForUser(api.ctx, userID)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -163,6 +163,42 @@ func TestPublicFilesPathConfiguration(t *testing.T) {
|
|||||||
assert.Equal(t, publicFilesPath, publicFilesFolderInTest)
|
assert.Equal(t, publicFilesPath, publicFilesFolderInTest)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPluginAPIGetUserPreference(t *testing.T) {
|
||||||
|
th := Setup(t).InitBasic()
|
||||||
|
defer th.TearDown()
|
||||||
|
api := th.SetupPluginAPI()
|
||||||
|
|
||||||
|
err := api.UpdatePreferencesForUser(th.BasicUser.Id, []model.Preference{
|
||||||
|
{
|
||||||
|
UserId: th.BasicUser.Id,
|
||||||
|
Category: model.PreferenceCategoryDisplaySettings,
|
||||||
|
Name: model.PreferenceNameUseMilitaryTime,
|
||||||
|
Value: "true",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
UserId: th.BasicUser.Id,
|
||||||
|
Category: "test_category",
|
||||||
|
Name: "test_key",
|
||||||
|
Value: "test_value",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require.Nil(t, err)
|
||||||
|
|
||||||
|
preference, err := api.GetPreferenceForUser(th.BasicUser.Id, model.PreferenceCategoryDisplaySettings, model.PreferenceNameUseMilitaryTime)
|
||||||
|
|
||||||
|
require.Nil(t, err)
|
||||||
|
assert.Equal(t, model.PreferenceCategoryDisplaySettings, preference.Category)
|
||||||
|
assert.Equal(t, model.PreferenceNameUseMilitaryTime, preference.Name)
|
||||||
|
assert.Equal(t, "true", preference.Value)
|
||||||
|
|
||||||
|
preference, err = api.GetPreferenceForUser(th.BasicUser.Id, "test_category", "test_key")
|
||||||
|
|
||||||
|
require.Nil(t, err)
|
||||||
|
assert.Equal(t, "test_category", preference.Category)
|
||||||
|
assert.Equal(t, "test_key", preference.Name)
|
||||||
|
assert.Equal(t, "test_value", preference.Value)
|
||||||
|
}
|
||||||
|
|
||||||
func TestPluginAPIGetUserPreferences(t *testing.T) {
|
func TestPluginAPIGetUserPreferences(t *testing.T) {
|
||||||
th := Setup(t)
|
th := Setup(t)
|
||||||
defer th.TearDown()
|
defer th.TearDown()
|
||||||
|
|||||||
@@ -166,6 +166,13 @@ type API interface {
|
|||||||
// Minimum server version: 5.6
|
// Minimum server version: 5.6
|
||||||
GetUsersInTeam(teamID string, page int, perPage int) ([]*model.User, *model.AppError)
|
GetUsersInTeam(teamID string, page int, perPage int) ([]*model.User, *model.AppError)
|
||||||
|
|
||||||
|
// GetPreferenceForUser gets a single preference for a user.
|
||||||
|
//
|
||||||
|
// @tag User
|
||||||
|
// @tag Preference
|
||||||
|
// Minimum server version: 9.5
|
||||||
|
GetPreferenceForUser(userID, category, name string) (model.Preference, *model.AppError)
|
||||||
|
|
||||||
// GetPreferencesForUser gets a user's preferences.
|
// GetPreferencesForUser gets a user's preferences.
|
||||||
//
|
//
|
||||||
// @tag User
|
// @tag User
|
||||||
|
|||||||
@@ -195,6 +195,13 @@ func (api *apiTimerLayer) GetUsersInTeam(teamID string, page int, perPage int) (
|
|||||||
return _returnsA, _returnsB
|
return _returnsA, _returnsB
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (api *apiTimerLayer) GetPreferenceForUser(userID, category, name string) (model.Preference, *model.AppError) {
|
||||||
|
startTime := timePkg.Now()
|
||||||
|
_returnsA, _returnsB := api.apiImpl.GetPreferenceForUser(userID, category, name)
|
||||||
|
api.recordTime(startTime, "GetPreferenceForUser", _returnsB == nil)
|
||||||
|
return _returnsA, _returnsB
|
||||||
|
}
|
||||||
|
|
||||||
func (api *apiTimerLayer) GetPreferencesForUser(userID string) ([]model.Preference, *model.AppError) {
|
func (api *apiTimerLayer) GetPreferencesForUser(userID string) ([]model.Preference, *model.AppError) {
|
||||||
startTime := timePkg.Now()
|
startTime := timePkg.Now()
|
||||||
_returnsA, _returnsB := api.apiImpl.GetPreferencesForUser(userID)
|
_returnsA, _returnsB := api.apiImpl.GetPreferencesForUser(userID)
|
||||||
|
|||||||
@@ -1703,6 +1703,37 @@ func (s *apiRPCServer) GetUsersInTeam(args *Z_GetUsersInTeamArgs, returns *Z_Get
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Z_GetPreferenceForUserArgs struct {
|
||||||
|
A string
|
||||||
|
B string
|
||||||
|
C string
|
||||||
|
}
|
||||||
|
|
||||||
|
type Z_GetPreferenceForUserReturns struct {
|
||||||
|
A model.Preference
|
||||||
|
B *model.AppError
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *apiRPCClient) GetPreferenceForUser(userID, category, name string) (model.Preference, *model.AppError) {
|
||||||
|
_args := &Z_GetPreferenceForUserArgs{userID, category, name}
|
||||||
|
_returns := &Z_GetPreferenceForUserReturns{}
|
||||||
|
if err := g.client.Call("Plugin.GetPreferenceForUser", _args, _returns); err != nil {
|
||||||
|
log.Printf("RPC call to GetPreferenceForUser API failed: %s", err.Error())
|
||||||
|
}
|
||||||
|
return _returns.A, _returns.B
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *apiRPCServer) GetPreferenceForUser(args *Z_GetPreferenceForUserArgs, returns *Z_GetPreferenceForUserReturns) error {
|
||||||
|
if hook, ok := s.impl.(interface {
|
||||||
|
GetPreferenceForUser(userID, category, name string) (model.Preference, *model.AppError)
|
||||||
|
}); ok {
|
||||||
|
returns.A, returns.B = hook.GetPreferenceForUser(args.A, args.B, args.C)
|
||||||
|
} else {
|
||||||
|
return encodableError(fmt.Errorf("API GetPreferenceForUser called but not implemented."))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type Z_GetPreferencesForUserArgs struct {
|
type Z_GetPreferencesForUserArgs struct {
|
||||||
A string
|
A string
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1942,6 +1942,32 @@ func (_m *API) GetPostsSince(channelId string, time int64) (*model.PostList, *mo
|
|||||||
return r0, r1
|
return r0, r1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetPreferenceForUser provides a mock function with given fields: userID, category, name
|
||||||
|
func (_m *API) GetPreferenceForUser(userID string, category string, name string) (model.Preference, *model.AppError) {
|
||||||
|
ret := _m.Called(userID, category, name)
|
||||||
|
|
||||||
|
var r0 model.Preference
|
||||||
|
var r1 *model.AppError
|
||||||
|
if rf, ok := ret.Get(0).(func(string, string, string) (model.Preference, *model.AppError)); ok {
|
||||||
|
return rf(userID, category, name)
|
||||||
|
}
|
||||||
|
if rf, ok := ret.Get(0).(func(string, string, string) model.Preference); ok {
|
||||||
|
r0 = rf(userID, category, name)
|
||||||
|
} else {
|
||||||
|
r0 = ret.Get(0).(model.Preference)
|
||||||
|
}
|
||||||
|
|
||||||
|
if rf, ok := ret.Get(1).(func(string, string, string) *model.AppError); ok {
|
||||||
|
r1 = rf(userID, category, name)
|
||||||
|
} else {
|
||||||
|
if ret.Get(1) != nil {
|
||||||
|
r1 = ret.Get(1).(*model.AppError)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r0, r1
|
||||||
|
}
|
||||||
|
|
||||||
// GetPreferencesForUser provides a mock function with given fields: userID
|
// GetPreferencesForUser provides a mock function with given fields: userID
|
||||||
func (_m *API) GetPreferencesForUser(userID string) ([]model.Preference, *model.AppError) {
|
func (_m *API) GetPreferencesForUser(userID string) ([]model.Preference, *model.AppError) {
|
||||||
ret := _m.Called(userID)
|
ret := _m.Called(userID)
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user