Skip to content

Commit

Permalink
Guard against null object when checking permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
nirvn committed Dec 12, 2023
1 parent 77b98ec commit 14a2258
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 41 deletions.
36 changes: 23 additions & 13 deletions src/core/positioning/bluetoothdevicemodel.cpp
Expand Up @@ -62,19 +62,29 @@ void BluetoothDeviceModel::startServiceDiscovery( const bool fullDiscovery )
{
QBluetoothPermission bluetoothPermission;
bluetoothPermission.setCommunicationModes( QBluetoothPermission::Access );
qApp->requestPermission( bluetoothPermission, [=]( const QPermission &permission ) {
if ( permission.status() == Qt::PermissionStatus::Granted )
{
mPermissionChecked = true;
startServiceDiscovery( fullDiscovery );
}
else
{
mLastError = tr( "Bluetooth permission denied" );
emit lastErrorChanged( mLastError );
}
} );
return;
Qt::PermissionStatus permissionStatus = qApp->checkPermission( bluetoothPermission );
if ( permissionStatus == Qt::PermissionStatus::Undetermined )
{
qApp->requestPermission( bluetoothPermission, this, [=]( const QPermission &permission ) {
if ( permission.status() == Qt::PermissionStatus::Granted )
{
mPermissionChecked = true;
startServiceDiscovery( fullDiscovery );
}
else
{
mLastError = tr( "Bluetooth permission denied" );
emit lastErrorChanged( mLastError );
}
} );
return;
}
else if ( permissionStatus == Qt::PermissionStatus::Denied )
{
mLastError = tr( "Bluetooth permission denied" );
emit lastErrorChanged( mLastError );
return;
}
}
#endif

Expand Down
39 changes: 25 additions & 14 deletions src/core/positioning/bluetoothreceiver.cpp
Expand Up @@ -97,20 +97,31 @@ void BluetoothReceiver::handleConnectDevice()
{
QBluetoothPermission bluetoothPermission;
bluetoothPermission.setCommunicationModes( QBluetoothPermission::Access );
qApp->requestPermission( bluetoothPermission, [=]( const QPermission &permission ) {
if ( permission.status() == Qt::PermissionStatus::Granted )
{
mPermissionChecked = true;
handleConnectDevice();
}
else
{
setValid( false );
mLastError = tr( "Bluetooth permission denied" );
emit lastErrorChanged( mLastError );
}
} );
return;
Qt::PermissionStatus permissionStatus = qApp->checkPermission( bluetoothPermission );
if ( permissionStatus == Qt::PermissionStatus::Undetermined )
{
qApp->requestPermission( bluetoothPermission, this, [=]( const QPermission &permission ) {
if ( permission.status() == Qt::PermissionStatus::Granted )
{
mPermissionChecked = true;
handleConnectDevice();
}
else
{
setValid( false );
mLastError = tr( "Bluetooth permission denied" );
emit lastErrorChanged( mLastError );
}
} );
return;
}
else if ( permissionStatus == Qt::PermissionStatus::Denied )
{
setValid( false );
mLastError = tr( "Bluetooth permission denied" );
emit lastErrorChanged( mLastError );
return;
}
}
#endif
if ( mAddress.isEmpty() )
Expand Down
39 changes: 25 additions & 14 deletions src/core/positioning/internalgnssreceiver.cpp
Expand Up @@ -112,20 +112,31 @@ void InternalGnssReceiver::handleConnectDevice()
{
QLocationPermission locationPermission;
locationPermission.setAccuracy( QLocationPermission::Precise );
qApp->requestPermission( locationPermission, [=]( const QPermission &permission ) {
if ( permission.status() == Qt::PermissionStatus::Granted )
{
mPermissionChecked = true;
handleConnectDevice();
}
else
{
setValid( false );
mLastError = tr( "Location permission denied" );
emit lastErrorChanged( mLastError );
}
} );
return;
Qt::PermissionStatus permissionStatus = qApp->checkPermission( locationPermission );
if ( permissionStatus == Qt::PermissionStatus::Undetermined )
{
qApp->requestPermission( locationPermission, [=]( const QPermission &permission ) {
if ( permission.status() == Qt::PermissionStatus::Granted )
{
mPermissionChecked = true;
handleConnectDevice();
}
else
{
setValid( false );
mLastError = tr( "Location permission denied" );
emit lastErrorChanged( mLastError );
}
} );
return;
}
else if ( permissionStatus == Qt::PermissionStatus::Denied )
{
setValid( false );
mLastError = tr( "Location permission denied" );
emit lastErrorChanged( mLastError );
return;
}
}
#endif
if ( mGeoPositionSource )
Expand Down

1 comment on commit 14a2258

@qfield-fairy
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.