requestUpdatedRowsFromServer method

Future<void> requestUpdatedRowsFromServer(
  1. List<RemoteDto> remoteDtoList,
  2. int version, {
  3. String? serverDatabase,
  4. String? testPassword,
})

Implementation

Future<void> requestUpdatedRowsFromServer(
    List<RemoteDto> remoteDtoList, int version,
    {String? serverDatabase, String? testPassword}) async {
  if (!initialized) throw ArgumentError(AbstractDao.C_MUST_INIT);
  // Convert RemoteDto list into Json
  Map<String, String> params = Map();
  Map<String, dynamic> tableData;
  Iterator<RemoteDto> iter = remoteDtoList.iterator;
  RemoteDto remoteDto;
  RemoteWaterLineFieldDto remoteWaterLineFieldDto;

  while (iter.moveNext()) {
    List<Map<String, dynamic>> tablesArray = [];
    remoteDto = iter.current;
    remoteWaterLineFieldDto = remoteDto as RemoteWaterLineFieldDto;

    tableData = JsonRemoteDtoConversion.getJsonFromWaterLineFieldDto(
        remoteWaterLineFieldDto, remoteDto.waterLineDto!);
    tablesArray.add(tableData);

    // Now send one record at a time
    UserStoreDto? userStoreDto = await userTools.getCurrentUserStoreDto(smd, transaction);
    UserDto? userDto = await userTools.getCurrentUserDto(smd, transaction);
    signedRequestHelper = SignedRequestHelper2(
        userStoreDto!.email!,
        userDto!.pass_key!);
    params["ts"] = TimeUtils.getNowCustomTs().toString();
    params["version"] = version.toString();

    if (serverDatabase != null) params["database"] = serverDatabase;
    if (testPassword != null) params["test_pass"] = testPassword;
    int? uid = await userTools.getCurrentUserId(smd, transaction);
    params["user_id"] = uid.toString();
    String jsonResponseString;
    try {
      jsonResponseString = await readClient.postBaseURI(
          jsonEncode(tablesArray),
          UrlTools.C_SELECTED_ROWS_POST_URL,
              signedRequestHelper.sign(params));
    } on TransmitStatusException catch (e) {
      print("WS $e");
      rethrow;
    }
    print("server response string=" + jsonResponseString);
    List<RemoteDto> returnedRemoteFieldDtoList =
        JsonRemoteDtoTools.getRemoteDtoListFromJsonString(
            jsonResponseString, smdSys, defaults);

    print("parsed server list=$returnedRemoteFieldDtoList");
    await latestRowsUtils.storeRemoteDtoList(returnedRemoteFieldDtoList);
  }
}