Initial commit: Flutter app + PHP/MySQL backend on Hostinger
Replaces Firebase with a self-hosted PHP/MySQL API served from winded.prymsolutions.com. Includes full backend (schema, auth, events, teams, brackets, suggestions, stats, media, file upload) and updated Flutter repositories and domain models. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
/// Immutable domain model representing an authenticated Winded user.
|
||||
///
|
||||
/// This is a pure-Dart model intentionally decoupled from Firebase types so
|
||||
/// the rest of the app can depend on it without pulling in firebase_auth.
|
||||
class AppUser {
|
||||
const AppUser({
|
||||
required this.uid,
|
||||
required this.email,
|
||||
this.displayName,
|
||||
this.photoUrl,
|
||||
});
|
||||
|
||||
final String uid;
|
||||
final String email;
|
||||
final String? displayName;
|
||||
final String? photoUrl;
|
||||
|
||||
AppUser copyWith({
|
||||
String? uid,
|
||||
String? email,
|
||||
String? displayName,
|
||||
String? photoUrl,
|
||||
}) {
|
||||
return AppUser(
|
||||
uid: uid ?? this.uid,
|
||||
email: email ?? this.email,
|
||||
displayName: displayName ?? this.displayName,
|
||||
photoUrl: photoUrl ?? this.photoUrl,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
if (identical(this, other)) return true;
|
||||
return other is AppUser &&
|
||||
other.uid == uid &&
|
||||
other.email == email &&
|
||||
other.displayName == displayName &&
|
||||
other.photoUrl == photoUrl;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(uid, email, displayName, photoUrl);
|
||||
|
||||
@override
|
||||
String toString() =>
|
||||
'AppUser(uid: $uid, email: $email, displayName: $displayName)';
|
||||
}
|
||||
Reference in New Issue
Block a user