@@ -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
/// A [Narrow] from a given URL, on `store` 's realm.
@@ -180,6 +181,7 @@ NarrowLink? _interpretNarrowSegments(List<String> segments, PerAccountStore stor
180
181
ApiNarrowDm ? dmElement;
181
182
ApiNarrowWith ? withElement;
182
183
Set <IsOperand > isElementOperands = {};
184
+ int ? nearMessageId;
183
185
184
186
for (var i = 0 ; i < segments.length; i += 2 ) {
185
187
final (operator , negated) = _parseOperator (segments[i]);
@@ -217,8 +219,9 @@ NarrowLink? _interpretNarrowSegments(List<String> segments, PerAccountStore stor
217
219
// It is fine to have duplicates of the same [IsOperand].
218
220
isElementOperands.add (IsOperand .fromRawString (operand));
219
221
220
- case _NarrowOperator .near: // TODO(#82): support for near
221
- continue ;
222
+ case _NarrowOperator .near:
223
+ if (nearMessageId != null ) return null ;
224
+ nearMessageId = int .tryParse (operand, radix: 10 );
222
225
223
226
case _NarrowOperator .unknown:
224
227
return null ;
@@ -260,7 +263,7 @@ NarrowLink? _interpretNarrowSegments(List<String> segments, PerAccountStore stor
260
263
return null ;
261
264
}
262
265
263
- return NarrowLink (narrow, realmUrl: store.realmUrl);
266
+ return NarrowLink (narrow, nearMessageId, realmUrl: store.realmUrl);
264
267
}
265
268
266
269
@JsonEnum (fieldRename: FieldRename .kebab, alwaysCreate: true )
0 commit comments