Skip to content

Commit

Permalink
Merge branch 'master' into localization
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonOyen authored Nov 13, 2019
2 parents a348d31 + d4ab0f5 commit c220dbb
Show file tree
Hide file tree
Showing 22 changed files with 655 additions and 319 deletions.
17 changes: 17 additions & 0 deletions lib/backend/repositories/nestingboxes_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,21 @@ class NestingBoxesRepository {
return null;
}
}

Future<NestingBox> addNewNestingBox(NestingBox nestingBox) async {
NestingBoxesApiService _nestingBoxesApi =
NestingBoxesApiService.create(_authBloc.domain);
var nestingBoxString = json.encode(nestingBox);
print(nestingBoxString);
final response = await _nestingBoxesApi.postNewNestingBox(
nestingBoxString, _authBloc.auth);
print(response.statusCode);
print(response.body);
if (response.statusCode == 201) {
final Map result = json.decode(response.body);
return NestingBox.fromJson(result);
} else {
return null;
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ abstract class NestingBoxesApiService extends ChopperService {
@Header('Authorization') String authHeader,
]);

@Post(headers: {'Content-Type': 'application/json'})
Future<Response> postNewNestingBox(
@Body() String nestingBox,
@Header('Authorization') String authHeader,
);

static NestingBoxesApiService create(String url) {
final client = ChopperClient(
baseUrl: 'https://$url/api/v1',
Expand Down
2 changes: 0 additions & 2 deletions lib/blocs/boxdata_bloc/boxdata_bloc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:nesteo_app/backend/repositories/nestingboxes_repository.dart';
import 'package:nesteo_app/blocs/authentication_bloc/authentication_bloc.dart';
import 'package:nesteo_app/blocs/pagecontrol_bloc/pagecontrol.dart';

import 'package:nesteo_app/model/nestingbox.dart';
import './boxdata.dart';
Expand Down Expand Up @@ -57,7 +56,6 @@ class BoxDataBloc extends Bloc<BoxDataEvent, BoxDataState> {
// print(nestingBoxes.length);
yield BoxReadyState();
}
if (event is NewBoxConfirmationEvent) {}
if (event is SortBoxEvent) {
if (this.state is! InitialBoxDataState) {
yield BoxChangingState();
Expand Down
10 changes: 0 additions & 10 deletions lib/blocs/boxdata_bloc/boxdata_event.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,3 @@ class ChangeSortTypeEvent extends BoxDataEvent {
@override
List<Object> get props => [];
}

class NewBoxEvent extends BoxDataEvent {
@override
List<Object> get props => [];
}

class NewBoxConfirmationEvent extends BoxDataEvent {
@override
List<Object> get props => [];
}
3 changes: 3 additions & 0 deletions lib/blocs/boxsender_bloc/boxsender.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export 'boxsender_bloc.dart';
export 'boxsender_event.dart';
export 'boxsender_state.dart';
59 changes: 59 additions & 0 deletions lib/blocs/boxsender_bloc/boxsender_bloc.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:nesteo_app/backend/repositories/auth_repository.dart';
import 'package:nesteo_app/backend/repositories/nestingboxes_repository.dart';
import 'package:nesteo_app/model/nestingbox.dart';
import 'package:nesteo_app/model/owner.dart';
import 'package:nesteo_app/model/region.dart';
import 'package:nesteo_app/model/user.dart';
import './boxsender.dart';

class BoxSenderBloc extends Bloc<BoxSenderEvent, BoxSenderState> {
NestingBox lastNewBox;
@override
BoxSenderState get initialState => WaitingForSend();

@override
Stream<BoxSenderState> mapEventToState(
BoxSenderEvent event,
) async* {
if (event is SendBoxEvent && state is WaitingForSend) {
yield SendingBoxState();
var boxRepo = NestingBoxesRepository(event.authBloc);
var authRepo = AuthRepository(event.authBloc);
User user = await authRepo.getAuth();

NestingBox response = await boxRepo.addNewNestingBox(
NestingBox(
hangUpUser: user,
coordinateLatitude: event.coordinates.latitude,
coordinateLongitude: event.coordinates.longitude,
hangUpDate: event.hangUpDate,
region: Region(
id: null,
name: "${event?.regionString}",
nestingBoxIdPrefix: (event.regionIdPrefixString == null)
? "X"
: event.regionIdPrefixString,
),
owner: Owner(id: null, name: "${event.ownerString}"),
material: event.material,
holeSize: event.holeSize,
comment: event.comment,
foreignId: event.foreignId,
oldId: event.oldId,
),
);

if (response != null) {
lastNewBox = response;
yield BoxSentState();
} else {
yield SendErrorState();
}
}
if (event is NewBoxDoneEvent) {
yield WaitingForSend();
}
}
}
43 changes: 43 additions & 0 deletions lib/blocs/boxsender_bloc/boxsender_event.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import 'package:equatable/equatable.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:nesteo_app/blocs/authentication_bloc/authentication_bloc.dart';

abstract class BoxSenderEvent extends Equatable {
const BoxSenderEvent();
}

class NewBoxDoneEvent extends BoxSenderEvent {
@override
List<Object> get props => null;
}

class SendBoxEvent extends BoxSenderEvent {
final AuthenticationBloc authBloc;
final LatLng coordinates;
final DateTime hangUpDate;
final String regionString;
final String regionIdPrefixString;
final String ownerString;
final String material;
final String holeSize;
final String comment;
final String oldId;
final String foreignId;

SendBoxEvent({
this.authBloc,
this.coordinates,
this.hangUpDate,
this.regionString,
this.regionIdPrefixString,
this.ownerString,
this.material,
this.holeSize,
this.comment,
this.oldId,
this.foreignId,
}) : super();

@override
List<Object> get props => null;
}
28 changes: 28 additions & 0 deletions lib/blocs/boxsender_bloc/boxsender_state.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import 'package:equatable/equatable.dart';

abstract class BoxSenderState extends Equatable {
const BoxSenderState();
}

class WaitingForSend extends BoxSenderState {
@override
List<Object> get props => [];
}

class SendingBoxState extends BoxSenderState {
@override
// TODO: implement props
List<Object> get props => null;
}

class BoxSentState extends BoxSenderState {
@override
// TODO: implement props
List<Object> get props => null;
}

class SendErrorState extends BoxSenderState {
@override
// TODO: implement props
List<Object> get props => null;
}
4 changes: 4 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:nesteo_app/blocs/authentication_bloc/authentication_bloc.dart';
import 'package:nesteo_app/blocs/authentication_bloc/authentication_event.dart';
import 'package:nesteo_app/blocs/boxsender_bloc/boxsender.dart';
import 'package:nesteo_app/blocs/mapcontrol_bloc/mapcontrol.dart';
import 'package:nesteo_app/blocs/pagecontrol_bloc/pagecontrol.dart';
import 'package:nesteo_app/blocs/snackbar_bloc/snackbar.dart';
Expand Down Expand Up @@ -50,6 +51,9 @@ class MyApp extends StatelessWidget {
builder: (BuildContext context) => InspectionDataBloc(
BlocProvider.of<AuthenticationBloc>(context)),
),
BlocProvider<BoxSenderBloc>(
builder: (BuildContext context) => BoxSenderBloc(),
)
],
child: BlocBuilder<PageControlBloc, PageControlState>(
condition: (previousState, state) =>
Expand Down
6 changes: 3 additions & 3 deletions lib/model/inspection.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class Inspection extends Equatable {
final String femaleParentBirdDiscovery;
final String maleParentBirdDiscovery;
final Species species;
final String imageFileName;
final bool hasImage;
final String comment;
final String lastUpdated;
final String nestingBoxId;
Expand All @@ -46,7 +46,7 @@ class Inspection extends Equatable {
this.femaleParentBirdDiscovery,
this.maleParentBirdDiscovery,
this.species,
this.imageFileName,
this.hasImage,
this.comment,
this.lastUpdated,
this.nestingBoxId,
Expand All @@ -70,7 +70,7 @@ class Inspection extends Equatable {
femaleParentBirdDiscovery,
maleParentBirdDiscovery,
species,
imageFileName,
hasImage,
comment,
lastUpdated,
nestingBoxId,
Expand Down
4 changes: 2 additions & 2 deletions lib/model/inspection.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions lib/model/nestingbox.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:nesteo_app/model/user.dart';

part 'nestingbox.g.dart';

@JsonSerializable(nullable: true)
@JsonSerializable(nullable: true, explicitToJson: true)
class NestingBox extends Equatable {
final String id;
final Region region;
Expand All @@ -19,7 +19,7 @@ class NestingBox extends Equatable {
final Owner owner;
final String material;
final String holeSize;
final String imageFileName;
final bool hasImage;
final String comment;
final String lastUpdated;
final int inspectionsCount;
Expand All @@ -37,7 +37,7 @@ class NestingBox extends Equatable {
this.owner,
this.material,
this.holeSize,
this.imageFileName,
this.hasImage,
this.comment,
this.lastUpdated,
this.inspectionsCount,
Expand All @@ -57,7 +57,7 @@ class NestingBox extends Equatable {
owner,
material,
holeSize,
imageFileName,
hasImage,
comment,
lastUpdated,
inspectionsCount,
Expand Down
10 changes: 5 additions & 5 deletions lib/model/nestingbox.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/model/user.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:json_annotation/json_annotation.dart';

part 'user.g.dart';

@JsonSerializable(nullable: false)
@JsonSerializable(nullable: true, includeIfNull: false)
class User extends Equatable {
final String id;
final String userName;
Expand Down
25 changes: 17 additions & 8 deletions lib/model/user.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit c220dbb

Please sign in to comment.