Skip to content

Commit a98da47

Browse files
authored
Merge pull request #1519 from sultanmyrza/feature-try-2-fix-go-pro-bluetooth-connections
Feature try 2 fix go pro bluetooth connections
2 parents 21307b6 + 7300b2f commit a98da47

File tree

6 files changed

+34
-10
lines changed

6 files changed

+34
-10
lines changed

package-lock.json

Lines changed: 5 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"@angular/platform-browser-dynamic": "^12.2.4",
3030
"@angular/router": "^12.2.4",
3131
"@capacitor-community/bluetooth-le": "^1.7.0",
32-
"@capacitor-community/http": "^1.4.1",
32+
"@capacitor-community/http": "github:numbersprotocol/http#fix-catch-disabled-Local-Network-case-on-iOS",
3333
"@capacitor-community/wifi": "github:numbersprotocol/community-capacitor-wifi#capacitor3",
3434
"@capacitor/android": "https://gitpkg.now.sh/numbersprotocol/capacitor/android?release-3.4.1-range-request-fix",
3535
"@capacitor/app": "^1.1.0",

src/app/features/home/home.page.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ export class HomePage {
172172
takePicture: null,
173173
recordVideo: null,
174174
}),
175-
this.goProBluetoothService.connectedDevice$,
175+
this.goProBluetoothService.lastConnectedDevice$,
176176
]).pipe(
177177
first(),
178178
concatMap(([translations, connectedDevice]) => {

src/app/features/settings/go-pro/go-pro-media-list-on-camera/go-pro-media-list-on-camera.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ <h4>{{ t('gopro.connectedWiFi') }}: {{ connectedWifiSSID }}</h4>
2626
<ion-button
2727
*ngIf="!isConnectedToGoProWifi"
2828
(click)="connectToGoProWifi()"
29+
[disabled]="isConnectingToGoProWifi"
2930
class="connect-to-go-pro-wifi-btn"
3031
>
3132
{{ t('gopro.connectToGoProWiFi') }}

src/app/features/settings/go-pro/go-pro-media-list-on-camera/go-pro-media-list-on-camera.component.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import { Router } from '@angular/router';
44
import {
55
AlertController,
66
NavController,
7+
Platform,
78
ToastController,
89
} from '@ionic/angular';
10+
import { ErrorService } from '../../../../shared/error/error.service';
911
import { GoProFile } from '../go-pro-media-file';
1012
import { GoProBluetoothService } from '../services/go-pro-bluetooth.service';
1113
import { GoProMediaService } from '../services/go-pro-media.service';
@@ -25,6 +27,7 @@ export class GoProMediaListOnCameraComponent implements OnInit {
2527

2628
connectedWifiSSID: string | null = null;
2729
isConnectedToGoProWifi: boolean | undefined;
30+
isConnectingToGoProWifi: boolean | undefined;
2831

2932
isScrollingContent = false;
3033

@@ -42,6 +45,8 @@ export class GoProMediaListOnCameraComponent implements OnInit {
4245
private readonly alertCtrl: AlertController,
4346
private readonly goProBluetoothService: GoProBluetoothService,
4447
private readonly goProWifiService: GoProWifiService,
48+
private readonly platform: Platform,
49+
private readonly errorService: ErrorService,
4550
public toastController: ToastController
4651
) {}
4752

@@ -64,21 +69,36 @@ export class GoProMediaListOnCameraComponent implements OnInit {
6469
this.fetchingFilesError = undefined;
6570
this.fetchingFiles = true;
6671
this.allMediaFiles = await this.goProMediaService.getFilesFromGoPro();
67-
this.fetchingFiles = false;
6872
} catch (error: any) {
69-
this.fetchingFilesError = error.toString();
73+
this.fetchingFilesError = 'Failed to fetch media from GoPro';
74+
if (this.platform.is('ios')) {
75+
this.fetchingFilesError =
76+
'Please check iOS Settings > Capture > Local Network, make sure the permission of Local Network is allowed Capture app.';
77+
}
7078
this.allMediaFiles = [];
79+
} finally {
7180
this.fetchingFiles = false;
7281
}
7382
}
7483

7584
async connectToGoProWifi() {
7685
try {
86+
this.isConnectingToGoProWifi = true;
87+
88+
if (!(await this.goProBluetoothService.getConnectedDevice())) {
89+
await this.errorService
90+
.toastError$('Connect to GoPro via bluetooth first')
91+
.toPromise();
92+
// I need to show alert because when catching error below for some reason it's empty
93+
throw new Error('Connect to GoPro via bluetooth first');
94+
}
7795
this.connectedWifiSSID = await this.goProWifiService.connectToGoProWiFi();
7896
this.isConnectedToGoProWifi = true;
7997
await this.fetchFilesFromGoProWiFi();
8098
} catch (error) {
8199
this.presentToast(JSON.stringify(error));
100+
} finally {
101+
this.isConnectingToGoProWifi = false;
82102
}
83103
}
84104

src/app/features/settings/go-pro/services/go-pro-bluetooth.service.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ export class GoProBluetoothService {
6565
undefined
6666
);
6767

68+
readonly lastConnectedDevice$ = this.preferences.getString$(
69+
PrefKeys.LAST_CONNECTED_BLUETOOTH_DEVICE
70+
);
71+
6872
constructor(private readonly preferenceManager: PreferenceManager) {}
6973

7074
private async initialize() {

0 commit comments

Comments
 (0)