[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>
Этот коммит содержится в:
Allen Lai
2020-01-09 00:42:29 -08:00
коммит произвёл Jesús Espino
родитель 397e83f870
Коммит 1909fd6607
5 изменённых файлов: 43 добавлений и 2 удалений

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

@@ -358,7 +358,7 @@ func restoreChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
channel, err = c.App.RestoreChannel(channel)
channel, err = c.App.RestoreChannel(channel, c.App.Session.UserId)
if err != nil {
c.Err = err
return

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

@@ -605,10 +605,40 @@ func (a *App) postChannelPrivacyMessage(user *model.User, channel *model.Channel
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 {
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
}

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

@@ -367,6 +367,14 @@
"id": "api.channel.rename_channel.cant_rename_group_messages.app_error",
"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",
"translation": "The channel has been archived or deleted"

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

@@ -38,6 +38,7 @@ const (
POST_CONVERT_CHANNEL = "system_convert_channel"
POST_PURPOSE_CHANGE = "system_purpose_change"
POST_CHANNEL_DELETED = "system_channel_deleted"
POST_CHANNEL_RESTORED = "system_channel_restored"
POST_EPHEMERAL = "system_ephemeral"
POST_CHANGE_CHANNEL_PRIVACY = "system_change_chan_privacy"
POST_ADD_BOT_TEAMS_CHANNELS = "add_bot_teams_channels"
@@ -264,6 +265,7 @@ func (o *Post) IsValid(maxPostSize int) *AppError {
POST_DISPLAYNAME_CHANGE,
POST_CONVERT_CHANNEL,
POST_CHANNEL_DELETED,
POST_CHANNEL_RESTORED,
POST_CHANGE_CHANNEL_PRIVACY,
POST_ME,
POST_ADD_BOT_TEAMS_CHANNELS:

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

@@ -18,6 +18,7 @@ const (
WEBSOCKET_EVENT_CHANNEL_CONVERTED = "channel_converted"
WEBSOCKET_EVENT_CHANNEL_CREATED = "channel_created"
WEBSOCKET_EVENT_CHANNEL_DELETED = "channel_deleted"
WEBSOCKET_EVENT_CHANNEL_RESTORED = "channel_restored"
WEBSOCKET_EVENT_CHANNEL_UPDATED = "channel_updated"
WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED = "channel_member_updated"
WEBSOCKET_EVENT_DIRECT_ADDED = "direct_added"