Authenticate reviews with Telegram init data
All checks were successful
Build and deploy Flutter Web / build (push) Successful in 3m1s
All checks were successful
Build and deploy Flutter Web / build (push) Successful in 3m1s
This commit is contained in:
@@ -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),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user