
Access shared data from other applications in your Lovable application using the Despia SDK from: https://www.npmjs.com/package/despia-native
First, install the package: npm install despia-native
Then import it: import despia from 'despia-native'
-
Import the Despia SDK in your component
-
Access shared data on page load using
despia.sharedData -
Check the data type and handle accordingly (image data URLs or plain text)
-
Display or process the shared content in your UI
-
Save the shared content to your backend if needed
This feature requires native capabilities which will be fully provided by the "despia-native" npm package, no additional native libraries are needed!
Please follow the installation instructions for the "despia-native" npm package closely, and do not modify my instructions. Implementation as mentioned is critical.
How it works: When users share content (like a photo from their gallery) to your app, the Despia runtime opens your application in a web view and injects the shared data through despia.sharedData. Images are provided as data URLs, text as plain strings. Video sharing is not yet supported.
Installation
Install the Despia package from NPM:
npm install despia-native
Usage
1. Import the SDK
import despia from 'despia-native';
2. Access Shared Data
Check for and process shared data on page load:
// Simple example - detect and display shared content
const sharedData = despia.sharedData;
if (sharedData) {
// Check if it's an image (data URL starts with 'data:image/')
if (sharedData.startsWith('data:image/')) {
// Display shared image
<img src={sharedData} alt="Shared content" />
} else {
// Display shared text
<p>{sharedData}</p>
}
}
3. Complete Component Example
import { useEffect, useState } from 'react';
import despia from 'despia-native';
function SharedContentHandler() {
const [sharedContent, setSharedContent] = useState(null);
const [contentType, setContentType] = useState(null);
useEffect(() => {
// Check for shared data on component mount
const data = despia.sharedData;
if (data) {
setSharedContent(data);
// Determine content type
if (data.startsWith('data:image/')) {
setContentType('image');
} else {
setContentType('text');
}
}
}, []);
if (!sharedContent) {
return <p>No shared content</p>;
}
return (
<div>
<h2>Received Shared Content</h2>
{contentType === 'image' ? (
<img
src={sharedContent}
alt="Shared image"
style={{ maxWidth: '100%', height: 'auto' }}
/>
) : (
<div>
<p>Shared Text:</p>
<pre>{sharedContent}</pre>
</div>
)}
</div>
);
}
Backend Integration
Save shared content to your backend for persistence:
// Save shared content to backend
useEffect(() => {
const data = despia.sharedData;
if (data) {
fetch('/api/save-shared-content', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
userId: user.id,
content: data,
contentType: data.startsWith('data:image/') ? 'image' : 'text',
timestamp: new Date().toISOString()
})
});
}
}, []);
Backend endpoint example:
// /api/save-shared-content endpoint
export default async function handler(req, res) {
const { userId, content, contentType, timestamp } = req.body;
try {
// Store the shared content in your database
const result = await db.collection('shared_content').add({
userId,
content,
contentType,
receivedAt: timestamp,
createdAt: timestamp
});
res.status(200).json({ success: true, id: result.id });
} catch (error) {
res.status(500).json({ error: 'Failed to save shared content' });
}
}
Supported Content Types
-
Images: Provided as data URLs (e.g.,
data:image/png;base64,...) -
Text: Provided as plain text strings
-
Videos: Not yet supported
Resources
-
View full NPM documentation for additional configuration options
Lovable Integration
This SDK is optimized for Lovable's prompt-based AI builder, enabling quick integration of shared content handling into your generated apps.
For additional support or questions, please contact our support team at support@despia.com