forked from trent_larson/crowd-funder-for-time-pwa
feat: enhance error logging and upgrade Android build tools
- Add detailed error logging for image upload failures - Upgrade Gradle to 8.11.1 and Android build tools to 8.9.0 - Add Capacitor camera and filesystem modules to Android build
This commit is contained in:
@@ -10,6 +10,8 @@ android {
|
|||||||
apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
|
apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(':capacitor-app')
|
implementation project(':capacitor-app')
|
||||||
|
implementation project(':capacitor-camera')
|
||||||
|
implementation project(':capacitor-filesystem')
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,5 +2,13 @@
|
|||||||
{
|
{
|
||||||
"pkg": "@capacitor/app",
|
"pkg": "@capacitor/app",
|
||||||
"classpath": "com.capacitorjs.plugins.app.AppPlugin"
|
"classpath": "com.capacitorjs.plugins.app.AppPlugin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pkg": "@capacitor/camera",
|
||||||
|
"classpath": "com.capacitorjs.plugins.camera.CameraPlugin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pkg": "@capacitor/filesystem",
|
||||||
|
"classpath": "com.capacitorjs.plugins.filesystem.FilesystemPlugin"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:8.2.1'
|
classpath 'com.android.tools.build:gradle:8.9.0'
|
||||||
classpath 'com.google.gms:google-services:4.4.0'
|
classpath 'com.google.gms:google-services:4.4.0'
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
|
|||||||
@@ -4,3 +4,9 @@ project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/
|
|||||||
|
|
||||||
include ':capacitor-app'
|
include ':capacitor-app'
|
||||||
project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android')
|
project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android')
|
||||||
|
|
||||||
|
include ':capacitor-camera'
|
||||||
|
project(':capacitor-camera').projectDir = new File('../node_modules/@capacitor/camera/android')
|
||||||
|
|
||||||
|
include ':capacitor-filesystem'
|
||||||
|
project(':capacitor-filesystem').projectDir = new File('../node_modules/@capacitor/filesystem/android')
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|||||||
@@ -271,13 +271,62 @@ export default class PhotoDialog extends Vue {
|
|||||||
this.close();
|
this.close();
|
||||||
this.setImageCallback(response.data.url as string);
|
this.setImageCallback(response.data.url as string);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error("Error uploading the image", error);
|
// Log the raw error first
|
||||||
|
logger.error("Raw error object:", JSON.stringify(error, null, 2));
|
||||||
|
|
||||||
|
let errorMessage = "There was an error saving the picture.";
|
||||||
|
|
||||||
|
if (axios.isAxiosError(error)) {
|
||||||
|
const status = error.response?.status;
|
||||||
|
const statusText = error.response?.statusText;
|
||||||
|
const data = error.response?.data;
|
||||||
|
|
||||||
|
// Log detailed error information
|
||||||
|
logger.error("Upload error details:", {
|
||||||
|
status,
|
||||||
|
statusText,
|
||||||
|
data: JSON.stringify(data, null, 2),
|
||||||
|
message: error.message,
|
||||||
|
config: {
|
||||||
|
url: error.config?.url,
|
||||||
|
method: error.config?.method,
|
||||||
|
headers: error.config?.headers
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (status === 401) {
|
||||||
|
errorMessage = "Authentication failed. Please try logging in again.";
|
||||||
|
} else if (status === 413) {
|
||||||
|
errorMessage = "Image file is too large. Please try a smaller image.";
|
||||||
|
} else if (status === 415) {
|
||||||
|
errorMessage = "Unsupported image format. Please try a different image.";
|
||||||
|
} else if (status && status >= 500) {
|
||||||
|
errorMessage = "Server error. Please try again later.";
|
||||||
|
} else if (data?.message) {
|
||||||
|
errorMessage = data.message;
|
||||||
|
}
|
||||||
|
} else if (error instanceof Error) {
|
||||||
|
// Log non-Axios error with full details
|
||||||
|
logger.error("Non-Axios error details:", {
|
||||||
|
name: error.name,
|
||||||
|
message: error.message,
|
||||||
|
stack: error.stack,
|
||||||
|
error: JSON.stringify(error, Object.getOwnPropertyNames(error), 2)
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// Log any other type of error
|
||||||
|
logger.error("Unknown error type:", {
|
||||||
|
error: JSON.stringify(error, null, 2),
|
||||||
|
type: typeof error
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.$notify(
|
this.$notify(
|
||||||
{
|
{
|
||||||
group: "alert",
|
group: "alert",
|
||||||
type: "danger",
|
type: "danger",
|
||||||
title: "Error",
|
title: "Error",
|
||||||
text: "There was an error saving the picture.",
|
text: errorMessage,
|
||||||
},
|
},
|
||||||
5000,
|
5000,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ export default class SharedPhotoView extends Vue {
|
|||||||
// this might be wrong since "name" goes with params, but it works so test well when you change it
|
// this might be wrong since "name" goes with params, but it works so test well when you change it
|
||||||
query: {
|
query: {
|
||||||
destinationPathAfter: "/",
|
destinationPathAfter: "/",
|
||||||
hideBackButton: true,
|
hideBackButton: "true",
|
||||||
imageUrl: url,
|
imageUrl: url,
|
||||||
recipientDid: this.activeDid,
|
recipientDid: this.activeDid,
|
||||||
},
|
},
|
||||||
@@ -221,13 +221,62 @@ export default class SharedPhotoView extends Vue {
|
|||||||
|
|
||||||
this.uploading = false;
|
this.uploading = false;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error("Error uploading the image", error);
|
// Log the raw error first
|
||||||
|
logger.error("Raw error object:", JSON.stringify(error, null, 2));
|
||||||
|
|
||||||
|
let errorMessage = "There was an error saving the picture.";
|
||||||
|
|
||||||
|
if (axios.isAxiosError(error)) {
|
||||||
|
const status = error.response?.status;
|
||||||
|
const statusText = error.response?.statusText;
|
||||||
|
const data = error.response?.data;
|
||||||
|
|
||||||
|
// Log detailed error information
|
||||||
|
logger.error("Upload error details:", {
|
||||||
|
status,
|
||||||
|
statusText,
|
||||||
|
data: JSON.stringify(data, null, 2),
|
||||||
|
message: error.message,
|
||||||
|
config: {
|
||||||
|
url: error.config?.url,
|
||||||
|
method: error.config?.method,
|
||||||
|
headers: error.config?.headers
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (status === 401) {
|
||||||
|
errorMessage = "Authentication failed. Please try logging in again.";
|
||||||
|
} else if (status === 413) {
|
||||||
|
errorMessage = "Image file is too large. Please try a smaller image.";
|
||||||
|
} else if (status === 415) {
|
||||||
|
errorMessage = "Unsupported image format. Please try a different image.";
|
||||||
|
} else if (status && status >= 500) {
|
||||||
|
errorMessage = "Server error. Please try again later.";
|
||||||
|
} else if (data?.message) {
|
||||||
|
errorMessage = data.message;
|
||||||
|
}
|
||||||
|
} else if (error instanceof Error) {
|
||||||
|
// Log non-Axios error with full details
|
||||||
|
logger.error("Non-Axios error details:", {
|
||||||
|
name: error.name,
|
||||||
|
message: error.message,
|
||||||
|
stack: error.stack,
|
||||||
|
error: JSON.stringify(error, Object.getOwnPropertyNames(error), 2)
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// Log any other type of error
|
||||||
|
logger.error("Unknown error type:", {
|
||||||
|
error: JSON.stringify(error, null, 2),
|
||||||
|
type: typeof error
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.$notify(
|
this.$notify(
|
||||||
{
|
{
|
||||||
group: "alert",
|
group: "alert",
|
||||||
type: "danger",
|
type: "danger",
|
||||||
title: "Error",
|
title: "Error",
|
||||||
text: "There was an error saving the picture.",
|
text: errorMessage,
|
||||||
},
|
},
|
||||||
5000,
|
5000,
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user