mirror of
https://github.com/PretendoNetwork/friends.git
synced 2026-09-11 12:58:38 -05:00
Added "last online" time
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
nex "github.com/PretendoNetwork/nex-go"
|
||||
)
|
||||
|
||||
@@ -47,4 +49,8 @@ func connect(packet *nex.PacketV0) {
|
||||
connectedUser.PID = packet.Sender().PID()
|
||||
connectedUser.Client = packet.Sender()
|
||||
connectedUsers[userPID] = connectedUser
|
||||
|
||||
lastOnline := nex.NewDateTime(0)
|
||||
lastOnline.FromTimestamp(time.Now())
|
||||
updateUserLastOnlineTime(packet.Sender().PID(), lastOnline)
|
||||
}
|
||||
|
||||
36
database.go
36
database.go
@@ -200,6 +200,12 @@ func updateNintendoPresenceV2(presence *nexproto.NintendoPresenceV2) {
|
||||
|
||||
}
|
||||
|
||||
func updateUserLastOnlineTime(pid uint32, lastOnline *nex.DateTime) {
|
||||
if err := cassandraClusterSession.Query(`UPDATE pretendo_friends.users SET last_online=? WHERE pid=?`, lastOnline.Value(), pid).Exec(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
// Get a users comment
|
||||
func getUserComment(pid uint32) *nexproto.Comment {
|
||||
var content string
|
||||
@@ -241,11 +247,15 @@ func getUserFriendList(pid uint32) []*nexproto.FriendInfo {
|
||||
|
||||
friendInfo := nexproto.NewFriendInfo()
|
||||
connectedUser := connectedUsers[friendPID]
|
||||
var lastOnline *nex.DateTime
|
||||
|
||||
if connectedUser != nil {
|
||||
// Online
|
||||
friendInfo.NNAInfo = connectedUser.NNAInfo
|
||||
friendInfo.Presence = connectedUser.Presence
|
||||
|
||||
lastOnline = nex.NewDateTime(0)
|
||||
lastOnline.FromTimestamp(time.Now())
|
||||
} else {
|
||||
// Offline
|
||||
friendUserInforation := getUserInfoByPID(friendPID)
|
||||
@@ -284,11 +294,20 @@ func getUserFriendList(pid uint32) []*nexproto.FriendInfo {
|
||||
friendInfo.Presence.Unknown5 = 0
|
||||
friendInfo.Presence.Unknown6 = 0
|
||||
friendInfo.Presence.Unknown7 = 0
|
||||
|
||||
var lastOnlineTime uint64
|
||||
if err := cassandraClusterSession.Query(`SELECT last_online FROM pretendo_friends.users WHERE pid=?`, friendPID).Scan(&lastOnlineTime); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Println(lastOnlineTime)
|
||||
|
||||
lastOnline = nex.NewDateTime(lastOnlineTime) // TODO: Change this
|
||||
}
|
||||
|
||||
friendInfo.Status = getUserComment(friendPID)
|
||||
friendInfo.BecameFriend = nex.NewDateTime(uint64(sliceMap[i]["date"].(int64)))
|
||||
friendInfo.LastOnline = nex.NewDateTime(uint64(sliceMap[i]["date"].(int64))) // TODO: Change this
|
||||
friendInfo.LastOnline = lastOnline
|
||||
friendInfo.Unknown = 0
|
||||
|
||||
friendList = append(friendList, friendInfo)
|
||||
@@ -489,11 +508,15 @@ func acceptFriendshipAndReturnFriendInfo(friendRequestID uint64) *nexproto.Frien
|
||||
|
||||
friendInfo := nexproto.NewFriendInfo()
|
||||
connectedUser := connectedUsers[senderPID]
|
||||
var lastOnline *nex.DateTime
|
||||
|
||||
if connectedUser != nil {
|
||||
// Online
|
||||
friendInfo.NNAInfo = connectedUser.NNAInfo
|
||||
friendInfo.Presence = connectedUser.Presence
|
||||
|
||||
lastOnline = nex.NewDateTime(0)
|
||||
lastOnline.FromTimestamp(time.Now())
|
||||
} else {
|
||||
// Offline
|
||||
senderUserInforation := getUserInfoByPID(senderPID)
|
||||
@@ -526,17 +549,24 @@ func acceptFriendshipAndReturnFriendInfo(friendRequestID uint64) *nexproto.Frien
|
||||
friendInfo.Presence.Unknown3 = 0
|
||||
friendInfo.Presence.GameServerID = 0
|
||||
friendInfo.Presence.Unknown4 = 0
|
||||
friendInfo.Presence.PID = 0
|
||||
friendInfo.Presence.PID = senderPID
|
||||
friendInfo.Presence.GatheringID = 0
|
||||
friendInfo.Presence.ApplicationData = []byte{0x00}
|
||||
friendInfo.Presence.Unknown5 = 0
|
||||
friendInfo.Presence.Unknown6 = 0
|
||||
friendInfo.Presence.Unknown7 = 0
|
||||
|
||||
var lastOnlineTime uint64
|
||||
if err := cassandraClusterSession.Query(`SELECT last_online FROM pretendo_friends.users WHERE pid=?`, senderPID).Scan(&lastOnlineTime); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
lastOnline = nex.NewDateTime(lastOnlineTime) // TODO: Change this
|
||||
}
|
||||
|
||||
friendInfo.Status = getUserComment(senderPID)
|
||||
friendInfo.BecameFriend = acceptedTime
|
||||
friendInfo.LastOnline = acceptedTime // TODO: Change this
|
||||
friendInfo.LastOnline = lastOnline // TODO: Change this
|
||||
friendInfo.Unknown = 0
|
||||
|
||||
return friendInfo
|
||||
|
||||
5
main.go
5
main.go
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
nex "github.com/PretendoNetwork/nex-go"
|
||||
nexproto "github.com/PretendoNetwork/nex-protocols-go"
|
||||
@@ -29,6 +30,10 @@ func main() {
|
||||
nexServer.On("Disconnect", func(packet *nex.PacketV0) {
|
||||
pid := packet.Sender().PID()
|
||||
delete(connectedUsers, pid)
|
||||
|
||||
lastOnline := nex.NewDateTime(0)
|
||||
lastOnline.FromTimestamp(time.Now())
|
||||
updateUserLastOnlineTime(pid, lastOnline)
|
||||
})
|
||||
|
||||
secureServer = nexproto.NewSecureProtocol(nexServer)
|
||||
|
||||
Reference in New Issue
Block a user