implement subscription saving
parent
a5257bb705
commit
4ca3c30ee7
42
ttbp/ttbp.go
42
ttbp/ttbp.go
|
@ -139,18 +139,30 @@ func SortPostsByRecent(posts []Post) []Post {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Subscriptions struct {
|
type Subscriptions struct {
|
||||||
users []User
|
users []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSubscriptions() *Subscriptions {
|
func GetSubscriptions() *Subscriptions {
|
||||||
|
file, err := os.OpenFile(path.Join(os.Getenv("HOME"), ".ttbp/config/subs"), os.O_RDONLY|os.O_CREATE, 0644)
|
||||||
|
if err != nil {
|
||||||
|
return &Subscriptions{}
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
var users []string
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
for scanner.Scan() {
|
||||||
|
users = append(users, scanner.Text())
|
||||||
|
}
|
||||||
|
|
||||||
return &Subscriptions{
|
return &Subscriptions{
|
||||||
users: []User{},
|
users: users,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (subscriptions *Subscriptions) IsSubscribed(user User) bool {
|
func (subscriptions *Subscriptions) IsSubscribed(user User) bool {
|
||||||
for _, sub := range subscriptions.users {
|
for _, sub := range subscriptions.users {
|
||||||
if sub.Name == user.Name {
|
if sub == user.Name {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -158,14 +170,34 @@ func (subscriptions *Subscriptions) IsSubscribed(user User) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (subscriptions *Subscriptions) Subscribe(user User) {
|
func (subscriptions *Subscriptions) Subscribe(user User) {
|
||||||
subscriptions.users = append(subscriptions.users, user)
|
subscriptions.users = append(subscriptions.users, user.Name)
|
||||||
|
subscriptions.write()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (subscriptions *Subscriptions) Unsubscribe(user User) {
|
func (subscriptions *Subscriptions) Unsubscribe(user User) {
|
||||||
for i, sub := range subscriptions.users {
|
for i, sub := range subscriptions.users {
|
||||||
if sub.Name == user.Name {
|
if sub == user.Name {
|
||||||
subscriptions.users = append(subscriptions.users[:i], subscriptions.users[i+1:]...)
|
subscriptions.users = append(subscriptions.users[:i], subscriptions.users[i+1:]...)
|
||||||
|
subscriptions.write()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (subscriptions *Subscriptions) write() {
|
||||||
|
file, err := os.Create(path.Join(os.Getenv("HOME"), ".ttbp/config/subs"))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
writer := bufio.NewWriter(file)
|
||||||
|
for _, line := range subscriptions.users {
|
||||||
|
_, err := writer.WriteString(line + "\n")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.Flush()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue