Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ android {
applicationId "org.pycon.us"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 260000
versionCode 26009
versionName "26.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
Expand Down
1 change: 1 addition & 0 deletions android/app/capacitor.build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ dependencies {
implementation project(':capacitor-share')
implementation project(':capacitor-splash-screen')
implementation project(':capacitor-status-bar')
implementation project(':ebarooni-capacitor-calendar')

}

Expand Down
4 changes: 4 additions & 0 deletions android/app/src/main/assets/capacitor.plugins.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,9 @@
{
"pkg": "@capacitor/status-bar",
"classpath": "com.capacitorjs.plugins.statusbar.StatusBarPlugin"
},
{
"pkg": "@ebarooni/capacitor-calendar",
"classpath": "dev.barooni.capacitor.calendar.CapacitorCalendarPlugin"
}
]
3 changes: 3 additions & 0 deletions android/capacitor.settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,6 @@ project(':capacitor-splash-screen').projectDir = new File('../node_modules/@capa

include ':capacitor-status-bar'
project(':capacitor-status-bar').projectDir = new File('../node_modules/@capacitor/status-bar/android')

include ':ebarooni-capacitor-calendar'
project(':ebarooni-capacitor-calendar').projectDir = new File('../node_modules/@ebarooni/capacitor-calendar/android')
9 changes: 9 additions & 0 deletions android/variables.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,13 @@ ext {
androidxJunitVersion = '1.2.1'
androidxEspressoCoreVersion = '3.6.1'
cordovaAndroidVersion = '10.1.1'

// Override @capacitor-mlkit/barcode-scanning's CameraX default (1.1.0).
// Play Console rejects releases whose native libraries are not aligned
// for 16 KB memory pages — libimage_processing_util_jni.so at CameraX
// 1.1.0 is 4 KB-aligned. 1.4.0+ ships 16 KB-aligned libs.
androidxCameraCamera2Version = '1.4.2'
androidxCameraCoreVersion = '1.4.2'
androidxCameraLifecycleVersion = '1.4.2'
androidxCameraViewVersion = '1.4.2'
}
5 changes: 5 additions & 0 deletions src/app/pages/social-media/social-media.page.scss
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ ion-title {
width: 24px;
height: 24px;
margin-inline-end: 16px;
// Ionic's MD mode only applies top/bottom margins to ion-icon[slot="start"],
// not raw <img> — without this the Bluesky/X/PyPI rows collapse shorter than
// the ion-icon-based rows on Android.
align-self: center;
margin-block: 12px;
}

.social-icon.bluesky {
Expand Down
9 changes: 7 additions & 2 deletions src/app/providers/conference-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ export class ConferenceData {
return this.trackIcons[trackName] || 'mic-outline';
}

private resolveSpeakerPhoto(photo?: string | null): string {
if (!photo) return 'assets/img/person-circle-outline.png';
return /^https?:\/\//.test(photo) ? photo : `${environment.baseUrl}${photo}`;
}

constructor(
public http: HttpClient,
public user: UserData,
Expand Down Expand Up @@ -234,7 +239,7 @@ export class ConferenceData {
"name": speaker.name,
// only display the speaker photo if it's not null in the response.
// otherwise, show a default fallback photo
"profilePic": speaker.photo ? speaker.photo : 'assets/img/person-circle-outline.png',
"profilePic": this.resolveSpeakerPhoto(speaker.photo),
"about": speaker.bio,
});
}
Expand Down Expand Up @@ -329,7 +334,7 @@ export class ConferenceData {
"name": speaker.name,
// only display the speaker photo if it's not null in the response.
// otherwise, show a default fallback photo
"profilePic": speaker.photo ? speaker.photo : 'assets/img/person-circle-outline.png',
"profilePic": this.resolveSpeakerPhoto(speaker.photo),
"about": speaker.bio,
});
}
Expand Down
9 changes: 8 additions & 1 deletion src/environments/environment.dev.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
import { Capacitor } from '@capacitor/core';

// Android emulator runs in a VM with its own loopback, so 127.0.0.1 points
// at the emulator itself. 10.0.2.2 is the emulator's alias for the host
// loopback. iOS simulator shares the host network stack, so 127.0.0.1 works.
const devHost = Capacitor.getPlatform() === 'android' ? '10.0.2.2' : '127.0.0.1';

export const environment = {
name: 'development',
production: false,
baseUrl: 'http://127.0.0.1:8000',
baseUrl: `http://${devHost}:8000`,
storageKey: '__pycon_us_mobile_development_2026',
timezone: 'America/Los_Angeles',
utcOffset: -7,
Expand Down
Loading