@@ -140,11 +140,17 @@ describe('getUserLastActiveAsRelativeTimeString', () => {
140
140
userPresence : UserPresence ,
141
141
userStatus : UserStatus ,
142
142
zulipFeatureLevel ?: number ,
143
+ offlineThresholdSeconds ?: number ,
143
144
} ) : string | null {
144
- const { userPresence, userStatus, zulipFeatureLevel = eg . recentZulipFeatureLevel } = args ;
145
+ const {
146
+ userPresence,
147
+ userStatus,
148
+ zulipFeatureLevel = eg . recentZulipFeatureLevel ,
149
+ offlineThresholdSeconds, // eslint-disable-line no-shadow
150
+ } = args ;
145
151
return getUserLastActiveAsRelativeTimeString (
146
152
eg . reduxStatePlus ( {
147
- presence : makePresenceState ( [ [ eg . otherUser , userPresence ] ] ) ,
153
+ presence : makePresenceState ( [ [ eg . otherUser , userPresence ] ] , { offlineThresholdSeconds } ) ,
148
154
userStatuses : Immutable . Map ( [ [ eg . otherUser . user_id , userStatus ] ] ) ,
149
155
accounts : [ { ...eg . plusReduxState . accounts [ 0 ] , zulipFeatureLevel } ] ,
150
156
} ) ,
@@ -169,6 +175,16 @@ describe('getUserLastActiveAsRelativeTimeString', () => {
169
175
expect ( lastActiveString ( { userPresence, userStatus } ) ) . toBe ( 'now' ) ;
170
176
} ) ;
171
177
178
+ test ( 'Use specified offline threshold' , ( ) => {
179
+ const userPresence = {
180
+ aggregated : { client : 'website' , status : 'active' , timestamp : currentTimestamp - 100 } ,
181
+ } ;
182
+ const userStatus = { away : false , status_text : null , status_emoji : null } ;
183
+ expect ( lastActiveString ( { userPresence, userStatus, offlineThresholdSeconds : 80 } ) ) . toBe (
184
+ '2 minutes ago' ,
185
+ ) ;
186
+ } ) ;
187
+
172
188
// TODO(server-6.0): Remove
173
189
test ( 'Pre-FL 148: if less than a day and user is "away", use imprecise "today"' , ( ) => {
174
190
const userPresence = {
0 commit comments