Working auth and added shared notes

This commit is contained in:
Nathan Anderson
2023-07-27 01:40:26 -06:00
parent 18aad2b3d5
commit 83393807c7
68 changed files with 2138 additions and 661 deletions
+2
View File
@@ -8,6 +8,7 @@ part 'budget.g.dart';
class Budget {
const Budget({
this.id,
required this.familyId,
required this.name,
required this.createdAt,
required this.updatedAt,
@@ -15,6 +16,7 @@ class Budget {
});
final int? id;
final int familyId;
final String name;
@JsonKey(fromJson: boolFromJson, toJson: boolToJson)
+2
View File
@@ -8,6 +8,7 @@ part of 'budget.dart';
Budget _$BudgetFromJson(Map<String, dynamic> json) => Budget(
id: json['id'] as int?,
familyId: json['family_id'] as int,
name: json['name'] as String,
createdAt: dateFromJson(json['created_at'] as int),
updatedAt: dateFromJson(json['updated_at'] as int),
@@ -16,6 +17,7 @@ Budget _$BudgetFromJson(Map<String, dynamic> json) => Budget(
Map<String, dynamic> _$BudgetToJson(Budget instance) => <String, dynamic>{
'id': instance.id,
'family_id': instance.familyId,
'name': instance.name,
'hide': boolToJson(instance.hide),
'created_at': dateToJson(instance.createdAt),
+3 -2
View File
@@ -8,13 +8,14 @@ part 'family_model.g.dart';
class FamilyModel {
const FamilyModel({
required this.id,
required this.budgetId,
required this.code,
required this.createdAt,
required this.updatedAt,
this.hide = false,
});
final int id, budgetId;
final int id;
final String? code;
@JsonKey(fromJson: boolFromJson, toJson: boolToJson)
final bool hide;
+2 -2
View File
@@ -8,7 +8,7 @@ part of 'family_model.dart';
FamilyModel _$FamilyModelFromJson(Map<String, dynamic> json) => FamilyModel(
id: json['id'] as int,
budgetId: json['budget_id'] as int,
code: json['code'] as String?,
createdAt: dateFromJson(json['created_at'] as int),
updatedAt: dateFromJson(json['updated_at'] as int),
hide: json['hide'] == null ? false : boolFromJson(json['hide'] as int),
@@ -17,7 +17,7 @@ FamilyModel _$FamilyModelFromJson(Map<String, dynamic> json) => FamilyModel(
Map<String, dynamic> _$FamilyModelToJson(FamilyModel instance) =>
<String, dynamic>{
'id': instance.id,
'budget_id': instance.budgetId,
'code': instance.code,
'hide': boolToJson(instance.hide),
'created_at': dateToJson(instance.createdAt),
'updated_at': dateToJson(instance.updatedAt),
+26 -4
View File
@@ -1,3 +1,4 @@
import 'dart:convert';
import 'dart:ui';
import 'package:json_annotation/json_annotation.dart';
@@ -8,27 +9,32 @@ part 'shared_note.g.dart';
@JsonSerializable()
class SharedNote {
const SharedNote({
SharedNote({
this.id,
required this.familyId,
required this.createdByUserId,
required this.content,
required this.title,
this.color,
this.createdAt,
this.updatedAt,
required this.tagIds,
this.isMarkdown = false,
this.hide = false,
});
final int? id;
final int familyId, createdByUserId;
final String content;
String content, title;
@JsonKey(fromJson: _tagIdsFromJson, toJson: _tagIdsToJson)
List<int> tagIds;
@JsonKey(fromJson: optionalColorFromJson, toJson: optionalColorToJson)
final Color? color;
Color? color;
@JsonKey(fromJson: boolFromJson, toJson: boolToJson)
final bool isMarkdown;
bool isMarkdown;
@JsonKey(fromJson: boolFromJson, toJson: boolToJson)
final bool hide;
@@ -43,4 +49,20 @@ class SharedNote {
_$SharedNoteFromJson(json);
Map<String, dynamic> toJson() => _$SharedNoteToJson(this);
factory SharedNote.copy(SharedNote note) =>
SharedNote.fromJson(note.toJson());
}
List<int> _tagIdsFromJson(String tagJson) {
final tagsMap = jsonDecode(tagJson) as List<dynamic>;
return tagsMap
.map(
(e) => int.parse(e),
)
.toList();
}
String _tagIdsToJson(List<int> tagIds) {
return jsonEncode(tagIds);
}
+4
View File
@@ -11,9 +11,11 @@ SharedNote _$SharedNoteFromJson(Map<String, dynamic> json) => SharedNote(
familyId: json['family_id'] as int,
createdByUserId: json['created_by_user_id'] as int,
content: json['content'] as String,
title: json['title'] as String,
color: optionalColorFromJson(json['color'] as String?),
createdAt: dateFromJson(json['created_at'] as int),
updatedAt: dateFromJson(json['updated_at'] as int),
tagIds: _tagIdsFromJson(json['tag_ids'] as String),
isMarkdown: json['is_markdown'] == null
? false
: boolFromJson(json['is_markdown'] as int),
@@ -26,6 +28,8 @@ Map<String, dynamic> _$SharedNoteToJson(SharedNote instance) =>
'family_id': instance.familyId,
'created_by_user_id': instance.createdByUserId,
'content': instance.content,
'title': instance.title,
'tag_ids': _tagIdsToJson(instance.tagIds),
'color': optionalColorToJson(instance.color),
'is_markdown': boolToJson(instance.isMarkdown),
'hide': boolToJson(instance.hide),
+41
View File
@@ -0,0 +1,41 @@
import 'package:json_annotation/json_annotation.dart';
import '../global/utils.dart';
part 'tag.g.dart';
enum TagType {
note,
}
@JsonSerializable()
class Tag {
const Tag({
this.id,
required this.familyId,
required this.createdByUserId,
required this.name,
required this.type,
this.createdAt,
this.updatedAt,
this.hide = false,
});
final int? id;
final int familyId, createdByUserId;
final String name;
final TagType type;
@JsonKey(fromJson: boolFromJson, toJson: boolToJson)
final bool hide;
@JsonKey(fromJson: dateFromJson, toJson: dateToJson)
final DateTime? createdAt;
@JsonKey(fromJson: dateFromJson, toJson: dateToJson)
final DateTime? updatedAt;
factory Tag.fromJson(Map<String, dynamic> json) => _$TagFromJson(json);
Map<String, dynamic> toJson() => _$TagToJson(this);
}
+33
View File
@@ -0,0 +1,33 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'tag.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
Tag _$TagFromJson(Map<String, dynamic> json) => Tag(
id: json['id'] as int?,
familyId: json['family_id'] as int,
createdByUserId: json['created_by_user_id'] as int,
name: json['name'] as String,
type: $enumDecode(_$TagTypeEnumMap, json['type']),
createdAt: dateFromJson(json['created_at'] as int),
updatedAt: dateFromJson(json['updated_at'] as int),
hide: json['hide'] == null ? false : boolFromJson(json['hide'] as int),
);
Map<String, dynamic> _$TagToJson(Tag instance) => <String, dynamic>{
'id': instance.id,
'family_id': instance.familyId,
'created_by_user_id': instance.createdByUserId,
'name': instance.name,
'type': _$TagTypeEnumMap[instance.type]!,
'hide': boolToJson(instance.hide),
'created_at': dateToJson(instance.createdAt),
'updated_at': dateToJson(instance.updatedAt),
};
const _$TagTypeEnumMap = {
TagType.note: 'note',
};
+27
View File
@@ -0,0 +1,27 @@
import 'package:json_annotation/json_annotation.dart';
import '../global/utils.dart';
part 'token.g.dart';
@JsonSerializable()
class Token {
const Token({
required this.userId,
required this.familyId,
required this.generatedAt,
required this.expiresAt,
});
final int familyId, userId;
@JsonKey(fromJson: dateFromJson, toJson: dateToJson)
final DateTime generatedAt;
@JsonKey(fromJson: dateFromJson, toJson: dateToJson)
final DateTime expiresAt;
factory Token.fromJson(Map<String, dynamic> json) => _$TokenFromJson(json);
Map<String, dynamic> toJson() => _$TokenToJson(this);
}
+21
View File
@@ -0,0 +1,21 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'token.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
Token _$TokenFromJson(Map<String, dynamic> json) => Token(
userId: json['user_id'] as int,
familyId: json['family_id'] as int,
generatedAt: dateFromJson(json['generated_at'] as int),
expiresAt: dateFromJson(json['expires_at'] as int),
);
Map<String, dynamic> _$TokenToJson(Token instance) => <String, dynamic>{
'family_id': instance.familyId,
'user_id': instance.userId,
'generated_at': dateToJson(instance.generatedAt),
'expires_at': dateToJson(instance.expiresAt),
};
+3
View File
@@ -11,6 +11,8 @@ class User {
required this.name,
required this.familyId,
required this.budgetId,
this.email,
this.username,
this.createdAt,
this.updatedAt,
this.lastActivityAt,
@@ -20,6 +22,7 @@ class User {
final int? id;
final int familyId, budgetId;
final String name;
final String? username, email;
@JsonKey(fromJson: boolFromJson, toJson: boolToJson)
final bool hide;
+4
View File
@@ -11,6 +11,8 @@ User _$UserFromJson(Map<String, dynamic> json) => User(
name: json['name'] as String,
familyId: json['family_id'] as int,
budgetId: json['budget_id'] as int,
email: json['email'] as String?,
username: json['username'] as String?,
createdAt: dateFromJson(json['created_at'] as int),
updatedAt: dateFromJson(json['updated_at'] as int),
lastActivityAt: dateFromJson(json['last_activity_at'] as int),
@@ -22,6 +24,8 @@ Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
'family_id': instance.familyId,
'budget_id': instance.budgetId,
'name': instance.name,
'username': instance.username,
'email': instance.email,
'hide': boolToJson(instance.hide),
'created_at': dateToJson(instance.createdAt),
'updated_at': dateToJson(instance.updatedAt),