MCPcopy Create free account
hub / github.com/daodst/chat / GetUserOffline3DayOrInactive3Day

Function GetUserOffline3DayOrInactive3Day

clientapi/routing/activate_user.go:101–144  ·  view source on GitHub ↗
(ctx context.Context, federation *gomatrixserverlib.FederationClient, userIds []string, server string)

Source from the content-addressed store, hash-verified

99}
100
101func GetUserOffline3DayOrInactive3Day(ctx context.Context, federation *gomatrixserverlib.FederationClient, userIds []string, server string) (overThreeDays []string, inactiveFor3Days []string, err error) {
102 var serversMap = make(map[string][]string)
103 for i, _ := range userIds {
104 // serverusers
105 _, domain, _ := gomatrixserverlib.SplitID('@', userIds[i])
106 if _, ok := serversMap[string(domain)]; !ok {
107 serversMap[string(domain)] = []string{userIds[i]}
108 } else {
109 serversMap[string(domain)] = append(serversMap[string(domain)], userIds[i])
110 }
111 }
112 res, err := new_db.GetUsersOfflineOver3Days(userIds)
113 if err != nil {
114 util.GetLogger(ctx).Error(err)
115 }
116 if len(res) > 0 {
117 overThreeDays = append(overThreeDays, res...)
118 }
119 // map, TODOwaitgroup,
120 for s, _ := range serversMap {
121 // server, federation
122 if s == server {
123 //
124 for i, _ := range serversMap[s] {
125 if value, ok := sync.SoPool.PositiveUsers[serversMap[s][i]]; ok {
126 if value>>1|0b000 == 0 {
127 inactiveFor3Days = append(inactiveFor3Days, serversMap[s][i])
128 }
129 }
130 }
131 } else {
132 //
133 // todo presence
134 inactives, err := federation.Inactive3Days(ctx, gomatrixserverlib.ServerName(s), serversMap[s])
135 if err != nil {
136 util.GetLogger(ctx).Error(err)
137 continue
138 }
139 inactiveFor3Days = append(inactiveFor3Days, inactives...)
140 }
141 }
142
143 return
144}
145
146func GetUserOffline7DayOrInactive7Day(ctx context.Context, federation *gomatrixserverlib.FederationClient, userIds []string, server string) (overSevenDays []string, inactiveFor7Days []string, err error) {
147 var serversMap = make(map[string][]string)

Callers 1

GetInactiveUsersByRoomFunction · 0.85

Calls 1

ErrorMethod · 0.45

Tested by

no test coverage detected