-
Notifications
You must be signed in to change notification settings - Fork 61
/
model.go
86 lines (71 loc) · 2.27 KB
/
model.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// SPDX-License-Identifier: AGPL-3.0-only
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published
// by the Free Software Foundation, version 3.
//
// 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 License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>
package user
import (
"time"
"github.com/trim21/go-phpserialize"
"github.com/bangumi/server/internal/model"
)
type GroupID = uint8
// User is visible for everyone.
type User struct {
RegistrationTime time.Time
NickName string
Avatar string
Sign string
UserName string
ID model.UserID
UserGroup GroupID
}
func (u User) GetID() model.UserID {
return u.ID
}
type ReceiveFilter uint8
const (
ReceiveFilterAll ReceiveFilter = iota
ReceiveFilterFriends
ReceiveFilterNone
)
type PrivacySettingsField int
const (
PrivacyReceivePrivateMessage PrivacySettingsField = 1
PrivacyReceiveTimelineReply PrivacySettingsField = 30
PrivacyReceiveMentionNotification PrivacySettingsField = 20
PrivacyReceiveCommentNotification PrivacySettingsField = 21
)
type PrivacySettings struct {
ReceivePrivateMessage ReceiveFilter
ReceiveTimelineReply ReceiveFilter
ReceiveMentionNotification ReceiveFilter
ReceiveCommentNotification ReceiveFilter
}
func (settings *PrivacySettings) Unmarshal(s []byte) {
rawMap := make(map[PrivacySettingsField]ReceiveFilter, 4)
err := phpserialize.Unmarshal(s, &rawMap)
if err != nil {
return
}
settings.ReceivePrivateMessage = rawMap[PrivacyReceivePrivateMessage]
settings.ReceiveTimelineReply = rawMap[PrivacyReceiveTimelineReply]
settings.ReceiveMentionNotification = rawMap[PrivacyReceiveMentionNotification]
settings.ReceiveCommentNotification = rawMap[PrivacyReceiveCommentNotification]
}
type Fields struct {
Site string
Location string
Bio string
BlockList []model.UserID
Privacy PrivacySettings
UID model.UserID
}