@@ -120,9 +120,10 @@ sealed class InternalLink {
120
120
/// The result of parsing some URL that points to a narrow on a Zulip realm,
121
121
/// when the narrow is of a type that this app understands.
122
122
class NarrowLink extends InternalLink {
123
- NarrowLink (this .narrow, {required super .realmUrl});
123
+ NarrowLink (this .narrow, this .nearMessageId, {required super .realmUrl});
124
124
125
125
final Narrow narrow;
126
+ final int ? nearMessageId;
126
127
}
127
128
128
129
/// Try to parse the given URL as a page in this app, on `store` 's realm.
@@ -184,6 +185,7 @@ NarrowLink? _interpretNarrowSegments(List<String> segments, PerAccountStore stor
184
185
ApiNarrowDm ? dmElement;
185
186
ApiNarrowWith ? withElement;
186
187
Set <IsOperand > isElementOperands = {};
188
+ int ? nearMessageId;
187
189
188
190
for (var i = 0 ; i < segments.length; i += 2 ) {
189
191
final (operator , negated) = _parseOperator (segments[i]);
@@ -221,8 +223,9 @@ NarrowLink? _interpretNarrowSegments(List<String> segments, PerAccountStore stor
221
223
// It is fine to have duplicates of the same [IsOperand].
222
224
isElementOperands.add (IsOperand .fromRawString (operand));
223
225
224
- case _NarrowOperator .near: // TODO(#82): support for near
225
- continue ;
226
+ case _NarrowOperator .near:
227
+ if (nearMessageId != null ) return null ;
228
+ nearMessageId = int .tryParse (operand, radix: 10 );
226
229
227
230
case _NarrowOperator .unknown:
228
231
return null ;
@@ -264,7 +267,7 @@ NarrowLink? _interpretNarrowSegments(List<String> segments, PerAccountStore stor
264
267
return null ;
265
268
}
266
269
267
- return NarrowLink (narrow, realmUrl: store.realmUrl);
270
+ return NarrowLink (narrow, nearMessageId, realmUrl: store.realmUrl);
268
271
}
269
272
270
273
@JsonEnum (fieldRename: FieldRename .kebab, alwaysCreate: true )
0 commit comments