From a98119f2d670a11efab6008129b767f9208f8113 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sun, 12 Dec 2021 15:39:47 +0100 Subject: [PATCH] feat: save user language in the settings --- pkg/migration/20211212151642.go | 43 ++++++++++++++++++++++++++++++ pkg/routes/api/v1/user_settings.go | 3 +++ pkg/routes/api/v1/user_show.go | 1 + pkg/swagger/docs.go | 4 +++ pkg/swagger/swagger.json | 4 +++ pkg/swagger/swagger.yaml | 3 +++ pkg/user/user.go | 14 +++++----- 7 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 pkg/migration/20211212151642.go diff --git a/pkg/migration/20211212151642.go b/pkg/migration/20211212151642.go new file mode 100644 index 000000000..4a7ebea53 --- /dev/null +++ b/pkg/migration/20211212151642.go @@ -0,0 +1,43 @@ +// Vikunja is a to-do list application to facilitate your life. +// Copyright 2018-2021 Vikunja and contributors. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public Licensee as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public Licensee for more details. +// +// You should have received a copy of the GNU Affero General Public Licensee +// along with this program. If not, see . + +package migration + +import ( + "src.techknowlogick.com/xormigrate" + "xorm.io/xorm" +) + +type user20211212151642 struct { + Language string `xorm:"varchar(50) null" json:"-"` +} + +func (user20211212151642) TableName() string { + return "users" +} + +func init() { + migrations = append(migrations, &xormigrate.Migration{ + ID: "20211212151642", + Description: "Add user langauge field", + Migrate: func(tx *xorm.Engine) error { + return tx.Sync2(user20211212151642{}) + }, + Rollback: func(tx *xorm.Engine) error { + return nil + }, + }) +} diff --git a/pkg/routes/api/v1/user_settings.go b/pkg/routes/api/v1/user_settings.go index 62b2ba743..ceed1e170 100644 --- a/pkg/routes/api/v1/user_settings.go +++ b/pkg/routes/api/v1/user_settings.go @@ -50,6 +50,8 @@ type UserSettings struct { DefaultListID int64 `json:"default_list_id"` // The day when the week starts for this user. 0 = sunday, 1 = monday, etc. WeekStart int `json:"week_start"` + // The user's language + Language string `json:"language"` } // GetUserAvatarProvider returns the currently set user avatar @@ -177,6 +179,7 @@ func UpdateGeneralUserSettings(c echo.Context) error { user.OverdueTasksRemindersEnabled = us.OverdueTasksRemindersEnabled user.DefaultListID = us.DefaultListID user.WeekStart = us.WeekStart + user.Language = us.Language _, err = user2.UpdateUser(s, user) if err != nil { diff --git a/pkg/routes/api/v1/user_show.go b/pkg/routes/api/v1/user_show.go index ad7ae08a9..902918f9a 100644 --- a/pkg/routes/api/v1/user_show.go +++ b/pkg/routes/api/v1/user_show.go @@ -73,6 +73,7 @@ func UserShow(c echo.Context) error { OverdueTasksRemindersEnabled: u.OverdueTasksRemindersEnabled, DefaultListID: u.DefaultListID, WeekStart: u.WeekStart, + Language: u.Language, }, DeletionScheduledAt: u.DeletionScheduledAt, IsLocalUser: u.Issuer == user.IssuerLocal, diff --git a/pkg/swagger/docs.go b/pkg/swagger/docs.go index 3177e0aa7..a893660b7 100644 --- a/pkg/swagger/docs.go +++ b/pkg/swagger/docs.go @@ -8966,6 +8966,10 @@ var doc = `{ "description": "If enabled, sends email reminders of tasks to the user.", "type": "boolean" }, + "language": { + "description": "The user's language", + "type": "string" + }, "name": { "description": "The new name of the current user.", "type": "string" diff --git a/pkg/swagger/swagger.json b/pkg/swagger/swagger.json index 858553860..7822e8696 100644 --- a/pkg/swagger/swagger.json +++ b/pkg/swagger/swagger.json @@ -8950,6 +8950,10 @@ "description": "If enabled, sends email reminders of tasks to the user.", "type": "boolean" }, + "language": { + "description": "The user's language", + "type": "string" + }, "name": { "description": "The new name of the current user.", "type": "string" diff --git a/pkg/swagger/swagger.yaml b/pkg/swagger/swagger.yaml index 47f36a404..45f40b81b 100644 --- a/pkg/swagger/swagger.yaml +++ b/pkg/swagger/swagger.yaml @@ -1274,6 +1274,9 @@ definitions: email_reminders_enabled: description: If enabled, sends email reminders of tasks to the user. type: boolean + language: + description: The user's language + type: string name: description: The new name of the current user. type: string diff --git a/pkg/user/user.go b/pkg/user/user.go index ccf50ce2f..44d6ad246 100644 --- a/pkg/user/user.go +++ b/pkg/user/user.go @@ -88,12 +88,13 @@ type User struct { Issuer string `xorm:"text null" json:"-"` Subject string `xorm:"text null" json:"-"` - EmailRemindersEnabled bool `xorm:"bool default true" json:"-"` - DiscoverableByName bool `xorm:"bool default false index" json:"-"` - DiscoverableByEmail bool `xorm:"bool default false index" json:"-"` - OverdueTasksRemindersEnabled bool `xorm:"bool default true index" json:"-"` - DefaultListID int64 `xorm:"bigint null index" json:"-"` - WeekStart int `xorm:"null" json:"-"` + EmailRemindersEnabled bool `xorm:"bool default true" json:"-"` + DiscoverableByName bool `xorm:"bool default false index" json:"-"` + DiscoverableByEmail bool `xorm:"bool default false index" json:"-"` + OverdueTasksRemindersEnabled bool `xorm:"bool default true index" json:"-"` + DefaultListID int64 `xorm:"bigint null index" json:"-"` + WeekStart int `xorm:"null" json:"-"` + Language string `xorm:"varchar(50) null" json:"-"` DeletionScheduledAt time.Time `xorm:"datetime null" json:"-"` DeletionLastReminderSent time.Time `xorm:"datetime null" json:"-"` @@ -477,6 +478,7 @@ func UpdateUser(s *xorm.Session, user *User) (updatedUser *User, err error) { "overdue_tasks_reminders_enabled", "default_list_id", "week_start", + "language", ). Update(user) if err != nil {