Browse Source

Merge pull request #364 from Leptopoda/cleanup/immutable_models

neon, neon_files: make models immutable
pull/360/head
Nikolas Rimikis 2 years ago committed by GitHub
parent
commit
415f97884d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      packages/neon/neon/lib/src/models/account.dart
  2. 4
      packages/neon/neon/lib/src/models/push_notification.dart
  3. 3
      packages/neon/neon_files/lib/models/file_details.dart

24
packages/neon/neon/lib/src/models/account.dart

@ -1,6 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'package:crypto/crypto.dart'; import 'package:crypto/crypto.dart';
import 'package:flutter/foundation.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud/nextcloud.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart';
@ -39,6 +40,7 @@ String userAgent(final PackageInfo packageInfo) {
} }
@JsonSerializable() @JsonSerializable()
@immutable
class Account { class Account {
Account({ Account({
required this.serverURL, required this.serverURL,
@ -46,7 +48,14 @@ class Account {
required this.username, required this.username,
this.password, this.password,
this.userAgent, this.userAgent,
}); }) : _client = NextcloudClient(
serverURL,
loginName: loginName,
username: username,
password: password,
userAgentOverride: userAgent,
cookieJar: CookieJar(),
);
factory Account.fromJson(final Map<String, dynamic> json) => _$AccountFromJson(json); factory Account.fromJson(final Map<String, dynamic> json) => _$AccountFromJson(json);
Map<String, dynamic> toJson() => _$AccountToJson(this); Map<String, dynamic> toJson() => _$AccountToJson(this);
@ -58,7 +67,6 @@ class Account {
final String? userAgent; final String? userAgent;
@override @override
// ignore: avoid_equals_and_hash_code_on_mutable_classes
bool operator ==(final Object other) => bool operator ==(final Object other) =>
other is Account && other is Account &&
other.serverURL == serverURL && other.serverURL == serverURL &&
@ -68,21 +76,13 @@ class Account {
other.userAgent == userAgent; other.userAgent == userAgent;
@override @override
// ignore: avoid_equals_and_hash_code_on_mutable_classes
int get hashCode => serverURL.hashCode + username.hashCode; int get hashCode => serverURL.hashCode + username.hashCode;
String get id => client.id; String get id => client.id;
NextcloudClient? _client; final NextcloudClient _client;
NextcloudClient get client => _client ??= NextcloudClient( NextcloudClient get client => _client;
serverURL,
loginName: loginName,
username: username,
password: password,
userAgentOverride: userAgent,
cookieJar: CookieJar(),
);
} }
Map<String, String> _idCache = {}; Map<String, String> _idCache = {};

4
packages/neon/neon/lib/src/models/push_notification.dart

@ -1,11 +1,13 @@
import 'package:flutter/foundation.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud/nextcloud.dart';
part 'push_notification.g.dart'; part 'push_notification.g.dart';
@JsonSerializable() @JsonSerializable()
@immutable
class PushNotification { class PushNotification {
PushNotification({ const PushNotification({
required this.accountID, required this.accountID,
required this.priority, required this.priority,
required this.type, required this.type,

3
packages/neon/neon_files/lib/models/file_details.dart

@ -1,7 +1,8 @@
part of '../neon_files.dart'; part of '../neon_files.dart';
@immutable
class FileDetails { class FileDetails {
FileDetails({ const FileDetails({
required this.path, required this.path,
required this.isDirectory, required this.isDirectory,
required this.size, required this.size,

Loading…
Cancel
Save