1
- import 'dart:developer' ;
2
- import 'dart:io' ;
3
-
4
1
import 'package:apidash_core/apidash_core.dart' ;
5
2
import 'package:flutter/material.dart' ;
6
3
import 'package:flutter_riverpod/flutter_riverpod.dart' ;
7
4
import 'package:apidash/consts.dart' ;
8
- import 'package:highlighter/languages/q.dart' ;
9
5
import 'providers.dart' ;
10
6
import '../models/models.dart' ;
11
7
import '../services/services.dart' show hiveHandler, HiveHandler;
@@ -236,7 +232,9 @@ class CollectionStateNotifier
236
232
List <FormDataModel >? formData,
237
233
int ? responseStatus,
238
234
String ? message,
235
+ ContentTypeWebSocket ? contentType,
239
236
HttpResponseModel ? httpResponseModel,
237
+ WebSocketResponseModel ? webSocketResponseModel,
240
238
}) {
241
239
final rId = id ?? ref.read (selectedIdStateProvider);
242
240
if (rId == null ) {
@@ -264,10 +262,12 @@ class CollectionStateNotifier
264
262
formData: formData ?? currentHttpRequestModel.formData,
265
263
) : currentHttpRequestModel;
266
264
267
- var currentWebSocketRequestModel = currentModel.webSocketRequestModel;
265
+ var currentWebSocketRequestModel = currentModel.webSocketRequestModel ?? const WebSocketRequestModel ();
266
+
268
267
final newWebSocketRequestModel = currentApiType == APIType .webSocket
269
268
? currentWebSocketRequestModel? .copyWith (
270
269
url: url ?? currentWebSocketRequestModel.url,
270
+ contentType: contentType ?? currentWebSocketRequestModel.contentType,
271
271
headers: headers ?? currentWebSocketRequestModel.headers,
272
272
params: params ?? currentWebSocketRequestModel.params,
273
273
isHeaderEnabledList: isHeaderEnabledList ??
@@ -471,7 +471,7 @@ class CollectionStateNotifier
471
471
Future <void > sendFrames () async {
472
472
final requestId = ref.read (selectedIdStateProvider);
473
473
ref.read (codePaneVisibleStateProvider.notifier).state = false ;
474
- final defaultUriScheme = ref. read (settingsProvider).defaultUriScheme;
474
+
475
475
476
476
if (requestId == null || state == null ) {
477
477
return ;
@@ -484,9 +484,7 @@ class CollectionStateNotifier
484
484
485
485
486
486
487
- // substituted websocket needs to be added here
488
-
489
- // set current model's isWorking to true and update state
487
+
490
488
var map = {...state! };
491
489
map[requestId] = requestModel.copyWith (
492
490
isWorking: true ,
@@ -496,9 +494,14 @@ class CollectionStateNotifier
496
494
497
495
498
496
String message = currentWebSocketRequestModel.message ?? '' ;
499
- (String ? ,DateTime ? ,String ? ) frame = await webSocketManager.sendText (requestId,message);
497
+ late (String ? ,DateTime ? ,String ? ) frame;
498
+ if (currentWebSocketRequestModel.contentType == ContentTypeWebSocket .text){
499
+ frame = await webSocketManager.sendText (requestId,message);
500
+ }else if (currentWebSocketRequestModel.contentType == ContentTypeWebSocket .binary){
501
+ frame = await webSocketManager.sendBinary (requestId,message);
502
+ }
500
503
501
- var newWebSocketResponseModel;
504
+ late WebSocketResponseModel newWebSocketResponseModel;
502
505
if (frame.$1 != null ){
503
506
newWebSocketResponseModel = requestModel.webSocketResponseModel! .copyWith (
504
507
frames: [
@@ -563,14 +566,23 @@ class CollectionStateNotifier
563
566
print ("entered null" );
564
567
return ;
565
568
}
569
+
570
+ bool isPinging = ref.read (settingsProvider).isPinging;
571
+
566
572
webSocketManager.createWebSocketClient (requestId);
567
- // webSocketClient.pingDuration = Duration(seconds: 5);
573
+ if (isPinging){
574
+ Duration durationPinging = Duration (milliseconds: ref.read (settingsProvider).pingInterval! );
575
+ webSocketManager.setPingInterval (requestId,durationPinging);
576
+ }else {
577
+ webSocketManager.setPingInterval (requestId,null );
578
+ }
579
+
568
580
final url = requestModel! .webSocketRequestModel! .url;
569
581
(String ? ,DateTime ? ) result = await webSocketManager.connect (requestId,url);
570
582
571
583
var map = {...state! };
572
584
map[requestId] = requestModel.copyWith (
573
- isWorking: result.$1 == "Connected" ,
585
+ isWorking: result.$1 == KLabelConnect ,
574
586
sendingTime: result.$2,
575
587
webSocketResponseModel: const WebSocketResponseModel (),
576
588
);
@@ -603,28 +615,10 @@ class CollectionStateNotifier
603
615
print (message);
604
616
},
605
617
onError: (error) async {
606
- print ("error found" );
607
-
608
- // var map = {...state!};
609
- // map[requestId] = requestModel.copyWith(
610
- // responseStatus: -1,
611
- // message: error.toString(),
612
- // isWorking: false,
613
- // );
614
- // state = map;
615
618
616
619
},
617
620
onDone: () async {
618
621
print ("Connection done" );
619
-
620
-
621
- // var map = {...state!};
622
- // map[requestId] = requestModel.copyWith(
623
- // responseStatus: 200,
624
- // message: "Connection closed",
625
- // isWorking: false,
626
- // );
627
- // state = map;
628
622
},
629
623
cancelOnError: false ,
630
624
);
0 commit comments