Authenticate reviews with Telegram init data
All checks were successful
Build and deploy Flutter Web / build (push) Successful in 3m1s

This commit is contained in:
Ruslan Bakiev
2026-05-08 16:44:32 +07:00
parent deba48185a
commit b4dab2271b
7 changed files with 125 additions and 6 deletions

View File

@@ -110,7 +110,10 @@ class _MapContent extends ConsumerWidget {
Navigator.of(context).push(
MaterialPageRoute<void>(
fullscreenDialog: true,
builder: (_) => AddExperienceFlow(coordinate: coordinate ?? _center),
builder: (_) => AddExperienceFlow(
coordinate: coordinate ?? _center,
hasTelegramAuth: state.hasTelegramAuth,
),
),
);
}
@@ -400,9 +403,14 @@ class _PlacePhotoCard extends StatelessWidget {
}
class AddExperienceFlow extends ConsumerStatefulWidget {
const AddExperienceFlow({super.key, required this.coordinate});
const AddExperienceFlow({
super.key,
required this.coordinate,
required this.hasTelegramAuth,
});
final LatLng coordinate;
final bool hasTelegramAuth;
@override
ConsumerState<AddExperienceFlow> createState() => _AddExperienceFlowState();
@@ -474,12 +482,13 @@ class _AddExperienceFlowState extends ConsumerState<AddExperienceFlow> {
),
_ => _VoiceStep(
placeName: _placeNameController.text,
hasTelegramAuth: widget.hasTelegramAuth,
seconds: _seconds,
minimumSeconds: _minimumVoiceSeconds,
time: time,
isRecording: _recording,
isSubmitting: _submitting,
canContinue: _seconds >= _minimumVoiceSeconds,
canContinue: widget.hasTelegramAuth && _seconds >= _minimumVoiceSeconds,
onToggleRecording: _toggleRecording,
onNext: () async {
setState(() => _submitting = true);
@@ -632,6 +641,7 @@ class _PlaceStep extends StatelessWidget {
class _VoiceStep extends StatelessWidget {
const _VoiceStep({
required this.placeName,
required this.hasTelegramAuth,
required this.seconds,
required this.minimumSeconds,
required this.time,
@@ -643,6 +653,7 @@ class _VoiceStep extends StatelessWidget {
});
final String placeName;
final bool hasTelegramAuth;
final int seconds;
final int minimumSeconds;
final String time;
@@ -666,13 +677,20 @@ class _VoiceStep extends StatelessWidget {
).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.w900),
),
const SizedBox(height: 8),
Text('Минимум $minimumSeconds секунд', textAlign: TextAlign.center),
Text(
hasTelegramAuth
? 'Минимум $minimumSeconds секунд'
: 'Открой через Telegram',
textAlign: TextAlign.center,
),
const SizedBox(height: 26),
SizedBox(
width: 132,
height: 132,
child: FilledButton(
onPressed: isSubmitting ? null : onToggleRecording,
onPressed: isSubmitting || !hasTelegramAuth
? null
: onToggleRecording,
style: FilledButton.styleFrom(shape: const CircleBorder()),
child: Icon(isRecording ? Icons.stop : Icons.mic, size: 54),
),