[MM-20804] Add "Unarchive Channel" option to the channel info screen (#13349)
* add websocket hooks to restoreChannel * add userId to call in api4 * add constant * undo changes in en.json * add constants to en.json * delete code for deleting webhooks * Update i18n/en.json Co-Authored-By: Ben Schumacher <ben.schumacher@mattermost.com> * restore channel ordering * delete Props * Update app/channel.go Co-Authored-By: Ben Schumacher <ben.schumacher@mattermost.com> * Update app/channel.go Co-Authored-By: Ben Schumacher <ben.schumacher@mattermost.com> * change message format * move WS message right after invalidate * manually reorder en.json entry * reorder en.json * undelete to restore * update en.json ordering * update wording * Update model/post.go Co-Authored-By: Saturnino Abril <saturnino.abril@gmail.com> * Update model/websocket_message.go Co-Authored-By: Saturnino Abril <saturnino.abril@gmail.com> * gofmt * undeleted to restored * add test to success case * delete repeated test Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com> Co-authored-by: Saturnino Abril <saturnino.abril@gmail.com> Co-authored-by: mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
Jesús Espino
родитель
397e83f870
Коммит
1909fd6607
@@ -358,7 +358,7 @@ func restoreChannel(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
channel, err = c.App.RestoreChannel(channel)
|
channel, err = c.App.RestoreChannel(channel, c.App.Session.UserId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -605,10 +605,40 @@ func (a *App) postChannelPrivacyMessage(user *model.User, channel *model.Channel
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) RestoreChannel(channel *model.Channel) (*model.Channel, *model.AppError) {
|
func (a *App) RestoreChannel(channel *model.Channel, userId string) (*model.Channel, *model.AppError) {
|
||||||
|
if channel.DeleteAt == 0 {
|
||||||
|
return nil, model.NewAppError("restoreChannel", "api.channel.restore_channel.restored.app_error", nil, "", http.StatusBadRequest)
|
||||||
|
}
|
||||||
|
|
||||||
if err := a.Srv.Store.Channel().Restore(channel.Id, model.GetMillis()); err != nil {
|
if err := a.Srv.Store.Channel().Restore(channel.Id, model.GetMillis()); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
a.InvalidateCacheForChannel(channel)
|
||||||
|
|
||||||
|
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_RESTORED, channel.TeamId, "", "", nil)
|
||||||
|
message.Add("channel_id", channel.Id)
|
||||||
|
a.Publish(message)
|
||||||
|
|
||||||
|
user, err := a.Srv.Store.User().Get(userId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if user != nil {
|
||||||
|
T := utils.GetUserTranslations(user.Locale)
|
||||||
|
|
||||||
|
post := &model.Post{
|
||||||
|
ChannelId: channel.Id,
|
||||||
|
Message: T("api.channel.restore_channel.unarchived", map[string]interface{}{"Username": user.Username}),
|
||||||
|
Type: model.POST_CHANNEL_RESTORED,
|
||||||
|
UserId: userId,
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := a.CreatePost(post, channel, false); err != nil {
|
||||||
|
mlog.Error("Failed to post unarchive message", mlog.Err(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return channel, nil
|
return channel, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -367,6 +367,14 @@
|
|||||||
"id": "api.channel.rename_channel.cant_rename_group_messages.app_error",
|
"id": "api.channel.rename_channel.cant_rename_group_messages.app_error",
|
||||||
"translation": "You cannot rename a group message channel"
|
"translation": "You cannot rename a group message channel"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "api.channel.restore_channel.restored.app_error",
|
||||||
|
"translation": "Unable to unarchive channel. The channel is not archived."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "api.channel.restore_channel.unarchived",
|
||||||
|
"translation": "{{.Username}} unarchived the channel."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "api.channel.update_channel.deleted.app_error",
|
"id": "api.channel.update_channel.deleted.app_error",
|
||||||
"translation": "The channel has been archived or deleted"
|
"translation": "The channel has been archived or deleted"
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ const (
|
|||||||
POST_CONVERT_CHANNEL = "system_convert_channel"
|
POST_CONVERT_CHANNEL = "system_convert_channel"
|
||||||
POST_PURPOSE_CHANGE = "system_purpose_change"
|
POST_PURPOSE_CHANGE = "system_purpose_change"
|
||||||
POST_CHANNEL_DELETED = "system_channel_deleted"
|
POST_CHANNEL_DELETED = "system_channel_deleted"
|
||||||
|
POST_CHANNEL_RESTORED = "system_channel_restored"
|
||||||
POST_EPHEMERAL = "system_ephemeral"
|
POST_EPHEMERAL = "system_ephemeral"
|
||||||
POST_CHANGE_CHANNEL_PRIVACY = "system_change_chan_privacy"
|
POST_CHANGE_CHANNEL_PRIVACY = "system_change_chan_privacy"
|
||||||
POST_ADD_BOT_TEAMS_CHANNELS = "add_bot_teams_channels"
|
POST_ADD_BOT_TEAMS_CHANNELS = "add_bot_teams_channels"
|
||||||
@@ -264,6 +265,7 @@ func (o *Post) IsValid(maxPostSize int) *AppError {
|
|||||||
POST_DISPLAYNAME_CHANGE,
|
POST_DISPLAYNAME_CHANGE,
|
||||||
POST_CONVERT_CHANNEL,
|
POST_CONVERT_CHANNEL,
|
||||||
POST_CHANNEL_DELETED,
|
POST_CHANNEL_DELETED,
|
||||||
|
POST_CHANNEL_RESTORED,
|
||||||
POST_CHANGE_CHANNEL_PRIVACY,
|
POST_CHANGE_CHANNEL_PRIVACY,
|
||||||
POST_ME,
|
POST_ME,
|
||||||
POST_ADD_BOT_TEAMS_CHANNELS:
|
POST_ADD_BOT_TEAMS_CHANNELS:
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ const (
|
|||||||
WEBSOCKET_EVENT_CHANNEL_CONVERTED = "channel_converted"
|
WEBSOCKET_EVENT_CHANNEL_CONVERTED = "channel_converted"
|
||||||
WEBSOCKET_EVENT_CHANNEL_CREATED = "channel_created"
|
WEBSOCKET_EVENT_CHANNEL_CREATED = "channel_created"
|
||||||
WEBSOCKET_EVENT_CHANNEL_DELETED = "channel_deleted"
|
WEBSOCKET_EVENT_CHANNEL_DELETED = "channel_deleted"
|
||||||
|
WEBSOCKET_EVENT_CHANNEL_RESTORED = "channel_restored"
|
||||||
WEBSOCKET_EVENT_CHANNEL_UPDATED = "channel_updated"
|
WEBSOCKET_EVENT_CHANNEL_UPDATED = "channel_updated"
|
||||||
WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED = "channel_member_updated"
|
WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED = "channel_member_updated"
|
||||||
WEBSOCKET_EVENT_DIRECT_ADDED = "direct_added"
|
WEBSOCKET_EVENT_DIRECT_ADDED = "direct_added"
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user