You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by gi...@apache.org on 2024/10/30 22:16:29 UTC
(cordova-docs) branch asf-site updated: Deploying to asf-site from @ apache/cordova-docs@3d3bd6c5349897e838e8a6f1be4db4968366ee7d 🚀
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/cordova-docs.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 0dd295858a Deploying to asf-site from @ apache/cordova-docs@3d3bd6c5349897e838e8a6f1be4db4968366ee7d 🚀
0dd295858a is described below
commit 0dd295858a957434db8a55d3e48140e373cdbb2c
Author: breautek <no...@breautek.com>
AuthorDate: Wed Oct 30 22:16:25 2024 +0000
Deploying to asf-site from @ apache/cordova-docs@3d3bd6c5349897e838e8a6f1be4db4968366ee7d 🚀
---
.../2024/10/23/cordova-plugin-file-8.1.1.html | 22 ++
.../cordova-plugin-file-8.1.2.html} | 42 ++--
blog/index.html | 49 +++-
.../dev/reference/cordova-plugin-camera/index.html | 279 ++++++++++++++-------
feed.xml | 170 ++++---------
sitemap.xml | 5 +
static/js/index.js | 1 +
7 files changed, 328 insertions(+), 240 deletions(-)
diff --git a/announcements/2024/10/23/cordova-plugin-file-8.1.1.html b/announcements/2024/10/23/cordova-plugin-file-8.1.1.html
index 16eaff92ba..399bda89fc 100644
--- a/announcements/2024/10/23/cordova-plugin-file-8.1.1.html
+++ b/announcements/2024/10/23/cordova-plugin-file-8.1.1.html
@@ -160,6 +160,8 @@ cordova plugin add cordova-plugin-file@8.1.1
<p>For iOS, there are no changes.</p>
+<p><em>Edit (2024-10-28)</em>: This patch introduces a regression on Android platforms when resolving <code>.toURL()</code> on some <code>file://</code> URIs. Please use upgrade to <code>cordova-plugin-file@8.1.2</code> instead.</p>
+
<p>Please report any issues you find by following the this <a href="https://github.com/apache/cordova#filing-a-bug">How to File a Bug</a> guide!</p>
<!--more-->
@@ -194,6 +196,26 @@ cordova plugin add cordova-plugin-file@8.1.1
</div>
<div class="col-sm-6">
+ <a href="/announcements/2024/10/28/cordova-plugin-file-8.1.2.html">Next</a>
+ <br>
+ <br>
+ <a class="title" href="/announcements/2024/10/28/cordova-plugin-file-8.1.2.html">File Plugin 8.1.2 Released!</a>
+ <div class="date"> 28 Oct 2024 - By Norman Breau </div>
+ <p class="content">
+ <!--
+ NOTE:
+ the markdownify filter is used here
+ because posts are rendered in sequence;
+ that is, the next post's content isn't
+ yet rendered at the time that this post
+ is being rendered, so page.next.excerpt
+ is still in Markdown and not HTML
+
+ Reference: https://github.com/jekyll/jekyll/issues/2860
+ -->
+ We are happy to announce that we have just released an update...
+ </p>
+
</div>
</div>
</footer>
diff --git a/announcements/2024/10/23/cordova-plugin-file-8.1.1.html b/announcements/2024/10/28/cordova-plugin-file-8.1.2.html
similarity index 82%
copy from announcements/2024/10/23/cordova-plugin-file-8.1.1.html
copy to announcements/2024/10/28/cordova-plugin-file-8.1.2.html
index 16eaff92ba..7148949726 100644
--- a/announcements/2024/10/23/cordova-plugin-file-8.1.1.html
+++ b/announcements/2024/10/28/cordova-plugin-file-8.1.2.html
@@ -6,12 +6,12 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
- <meta name="description" content="We are happy to announce that we have just released an update for cordova-plugin-file! cordova-plugin-file@8.1.1To upgrade:cordova plugin remove cordova-plu...">
+ <meta name="description" content="We are happy to announce that we have just released an update for cordova-plugin-file! cordova-plugin-file@8.1.2To upgrade:cordova plugin remove cordova-plu...">
<title>
- File Plugin 8.1.1 Released! - Apache Cordova
+ File Plugin 8.1.2 Released! - Apache Cordova
</title>
@@ -23,7 +23,7 @@
- <link rel="canonical" href="https://cordova.apache.org/announcements/2024/10/23/cordova-plugin-file-8.1.1.html">
+ <link rel="canonical" href="https://cordova.apache.org/announcements/2024/10/28/cordova-plugin-file-8.1.2.html">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="/static/css/main.css">
@@ -126,54 +126,44 @@
<div class="post">
<header>
- <div class="title">File Plugin 8.1.1 Released!</div>
+ <div class="title">File Plugin 8.1.2 Released!</div>
<div class="author">By:
<a href="https://breautek.com">Norman Breau</a>
</div>
- <div class="date">23 Oct 2024</div>
+ <div class="date">28 Oct 2024</div>
</header>
<section>
<div>
<p>We are happy to announce that we have just released an update for <code>cordova-plugin-file</code>!</p>
<ul>
- <li><a href="https://www.npmjs.com/package/cordova-plugin-file">cordova-plugin-file@8.1.1</a></li>
+ <li><a href="https://www.npmjs.com/package/cordova-plugin-file">cordova-plugin-file@8.1.2</a></li>
</ul>
<p><strong>To upgrade:</strong></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cordova plugin remove cordova-plugin-file
-cordova plugin add cordova-plugin-file@8.1.1
+cordova plugin add cordova-plugin-file@8.1.2
</code></pre></div></div>
<h2>Release Highlights</h2>
-<p>For Android, we corrected an issue that prevented <code>.toURL()</code> to be used on <code>content://</code> file entries. Now <code>.toURL()</code> will return a DOM-usable url on both <code>file://</code> and <code>content://</code> file entries.</p>
+<p>This patch is a regression fix. See <a href="https://cordova.apache.org/announcements/2024/10/23/cordova-plugin-file-8.1.1.html">8.1.1 release blog</a> post for more details.</p>
-<p>This will be important for upcoming releases planned for the Camera plugin.</p>
+<p>In 8.1.1, the <code>FileEntry.toURL()</code> method broke when used on any <code>file://</code> that didn't lead to the app's internal assets on Android. This is now corrected.</p>
-<p>Note that the <code>AndroidInsecureFileModeEnabled</code> preference must be off. If <code>AndroidInsecureFileModeEnabled</code> preference is turned on, then <code>.toURL()</code> will return the underlying URL and modern Android devices will reject <code>content://</code> file paths. If your project is still using <code>AndroidInsecureFileModeEnabled</code> it is time to strongly consider migrating to schemes by turning the <code>AndroidInsecureFileModeEnabled</code> preference off.</p>
+<p>This bug didn't effect iOS devices.</p>
-<p>By default, the <code>AndroidInsecureFileModeEnabled</code> preference is disabled. If your project does not explicitly enable it, then no action is required.</p>
-
-<p>For iOS, there are no changes.</p>
-
-<p>Please report any issues you find by following the this <a href="https://github.com/apache/cordova#filing-a-bug">How to File a Bug</a> guide!</p>
+<p>Please report any issues you find by following the <a href="https://github.com/apache/cordova#filing-a-bug">How to File a Bug</a> guide!</p>
<!--more-->
<h1>Changes include:</h1>
<p><strong>Fixes:</strong></p>
<ul>
- <li><a href="https://github.com/apache/cordova-plugin-file/pull/629">GH-629</a> fix(android): Content FS support in PathHandler (#629)</li>
-</ul>
-
-<p><strong>Documentation:</strong></p>
-<ul>
- <li><a href="https://github.com/apache/cordova-plugin-file/pull/639">GH-639</a> docs: Correct onwriteend to onwrite (#639)</li>
- <li><a href="https://github.com/apache/cordova-plugin-file/pull/638">GH-628</a> docs: Reformatting specs (#638)</li>
+ <li><a href="https://github.com/apache/cordova-plugin-file/pull/640">GH-640</a> fix(android): Regression breaking resolved DOM-usable file:// paths (#640)</li>
</ul>
</div>
@@ -182,13 +172,13 @@ cordova plugin add cordova-plugin-file@8.1.1
<div class="row">
<div class="col-sm-6">
- <a href="/announcements/2024/10/21/cordova-ios-8.1.1-beta.1.html">Previous</a>
+ <a href="/announcements/2024/10/23/cordova-plugin-file-8.1.1.html">Previous</a>
<br>
<br>
- <a class="title" href="/announcements/2024/10/21/cordova-ios-8.1.1-beta.1.html">Cordova iOS 8.0.0 Beta1 is Now Available!</a>
- <div class="date"> 21 Oct 2024 - By Darryl Pogue </div>
+ <a class="title" href="/announcements/2024/10/23/cordova-plugin-file-8.1.1.html">File Plugin 8.1.1 Released!</a>
+ <div class="date"> 23 Oct 2024 - By Norman Breau </div>
<p class="content">
- We are happy to announce that we have just released a beta...
+ We are happy to announce that we have just released an update...
</p>
</div>
diff --git a/blog/index.html b/blog/index.html
index ad705782cd..25fcddc7d8 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -127,6 +127,51 @@
</h1>
<ul class="posts">
+ <li>
+ <header>
+ <div class="adorner" blogTime="Mon, 28 Oct 2024 00:00:00 +0000"></div>
+ <h2 class="title">
+ <a href="/announcements/2024/10/28/cordova-plugin-file-8.1.2.html">File Plugin 8.1.2 Released!</a>
+ </h2>
+ <div class="details">
+ <span class="date">28 Oct 2024</span>
+ - by
+ <span class="author">
+
+ <a href="https://breautek.com">Norman Breau</a>
+
+ </span>
+ <a class="comment" href="/announcements/2024/10/28/cordova-plugin-file-8.1.2.html#disqus_thread"></a>
+ </div>
+ </header>
+ <section class="post-excerpt">
+ <p><p>We are happy to announce that we have just released an update for <code>cordova-plugin-file</code>!</p>
+
+<ul>
+ <li><a href="https://www.npmjs.com/package/cordova-plugin-file">cordova-plugin-file@8.1.2</a></li>
+</ul>
+
+<p><strong>To upgrade:</strong></p>
+
+<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cordova plugin remove cordova-plugin-file
+cordova plugin add cordova-plugin-file@8.1.2
+</code></pre></div></div>
+
+<h2>Release Highlights</h2>
+
+<p>This patch is a regression fix. See <a href="https://cordova.apache.org/announcements/2024/10/23/cordova-plugin-file-8.1.1.html">8.1.1 release blog</a> post for more details.</p>
+
+<p>In 8.1.1, the <code>FileEntry.toURL()</code> method broke when used on any <code>file://</code> that didn't lead to the app's internal assets on Android. This is now corrected.</p>
+
+<p>This bug didn't effect iOS devices.</p>
+
+<p>Please report any issues you find by following the <a href="https://github.com/apache/cordova#filing-a-bug">How to File a Bug</a> guide!</p>
+
+</p>
+ <div><a href="/announcements/2024/10/28/cordova-plugin-file-8.1.2.html">More...</a></div>
+ </section>
+ </li>
+
<li>
<header>
<div class="adorner" blogTime="Wed, 23 Oct 2024 00:00:00 +0000"></div>
@@ -169,6 +214,8 @@ cordova plugin add cordova-plugin-file@8.1.1
<p>For iOS, there are no changes.</p>
+<p><em>Edit (2024-10-28)</em>: This patch introduces a regression on Android platforms when resolving <code>.toURL()</code> on some <code>file://</code> URIs. Please use upgrade to <code>cordova-plugin-file@8.1.2</code> instead.</p>
+
<p>Please report any issues you find by following the this <a href="https://github.com/apache/cordova#filing-a-bug">How to File a Bug</a> guide!</p>
</p>
@@ -14284,7 +14331,7 @@ just around the corner (July 19, 2013), and we are really excited about it!</p>
<script>
window.onload = function(){
setTimeout(function(){
- var lastPostTime = new Date("Wed, 23 Oct 2024 00:00:00 +0000").getTime();
+ var lastPostTime = new Date("Mon, 28 Oct 2024 00:00:00 +0000").getTime();
setCookie("visitTime", lastPostTime, 365);
}, 2000);
};
diff --git a/docs/en/dev/reference/cordova-plugin-camera/index.html b/docs/en/dev/reference/cordova-plugin-camera/index.html
index 0feb085a12..46d4aab23f 100644
--- a/docs/en/dev/reference/cordova-plugin-camera/index.html
+++ b/docs/en/dev/reference/cordova-plugin-camera/index.html
@@ -2460,8 +2460,97 @@ If no value is passed, it will use <code>1.6.+</code> as the default value.</p>
<h3>camera.getPicture(successCallback, errorCallback, options)</h3>
<p>Takes a photo using the camera, or retrieves a photo from the device's
-image gallery. The image is passed to the success callback as a
-Base64-encoded <code>String</code>, or as the URI for the image file.</p>
+image gallery. The result is provided in the first parameter of the <code>successCallback</code> as a string.</p>
+
+<p>As of v8.0.0, the result is formatted as URIs. The scheme will vary depending on settings and platform.</p>
+
+<table>
+ <thead>
+ <tr>
+ <th>Platform</th>
+ <th>Destination Type</th>
+ <th>Format</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Android</td>
+ <td>FILE_URI</td>
+ <td>An URI scheme such as <code>file://...</code> or <code>content://...</code></td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>DATA_URL</td>
+ <td>Base 64 encoded with the proper data URI header</td>
+ </tr>
+ <tr>
+ <td>iOS</td>
+ <td>FILE_URI</td>
+ <td><code>file://</code> schemed paths</td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>DATA_URL</td>
+ <td>Base 64 encoded with the proper data URI header</td>
+ </tr>
+ <tr>
+ <td>Browser</td>
+ <td>FILE_URI</td>
+ <td>Not supported</td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>DATA_URL</td>
+ <td>Base 64 encoded with the proper data URI header</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>v7 and earlier versions, the return format is as follows:</p>
+
+<table>
+ <thead>
+ <tr>
+ <th>Platform</th>
+ <th>Destination Type</th>
+ <th>Format</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Android</td>
+ <td>FILE_URI</td>
+ <td>Raw file path (unprefixed)</td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>DATA_URL</td>
+ <td>Base 64 encoded, without the <code>data:</code> prefix</td>
+ </tr>
+ <tr>
+ <td>iOS</td>
+ <td>FILE_URI</td>
+ <td><code>file://</code> schemed paths</td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>DATA_URL</td>
+ <td>Base 64 encoded, without the <code>data:</code> prefix</td>
+ </tr>
+ <tr>
+ <td>Browser</td>
+ <td>FILE_URI</td>
+ <td>Not supported</td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>DATA_URL</td>
+ <td>Base 64 encoded, without the <code>data:</code> prefix</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>For this reason, upgrading to v8 is strongly recommended as it greatly streamlines the return data.</p>
<p>The <code>camera.getPicture</code> function opens the device's default camera
application that allows users to snap pictures by default - this behavior occurs,
@@ -2474,19 +2563,11 @@ that allows users to select an existing image.</p>
<p>The return value is sent to the <a href="#module_camera.onSuccess"><code>cameraSuccess</code></a> callback function, in
one of the following formats, depending on the specified
-<code>cameraOptions</code>:</p>
+<code>cameraOptions</code>. You can do whatever you want with content:</p>
<ul>
- <li>A <code>String</code> containing the Base64-encoded photo image.</li>
- <li>A <code>String</code> representing the image file location on local storage (default).</li>
-</ul>
-
-<p>You can do whatever you want with the encoded image or URI, for
-example:</p>
-
-<ul>
- <li>Render the image in an <code><img></code> tag, as in the example below</li>
- <li>Save the data locally (<code>LocalStorage</code>, <a href="http://brianleroux.github.com/lawnchair/">Lawnchair</a>, etc.)</li>
+ <li>Render the content in an <code><img></code> or <code><video></code> tag</li>
+ <li>Copy the data to a persistent location</li>
<li>Post the data to a remote server</li>
</ul>
@@ -2496,6 +2577,31 @@ quality, even if a <code>quality</code> parameter is specified. To avoid common
memory problems, set <code>Camera.destinationType</code> to <code>FILE_URI</code> rather
than <code>DATA_URL</code>.</p>
+<p><strong>NOTE</strong>: To use <code>saveToPhotoAlbum</code> option on Android 9 (API 28) and lower, the <code>WRITE_EXTERNAL_STORAGE</code> permission must be declared.</p>
+
+<p>To do this, add the following in your <code>config.xml</code>:</p>
+
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><config-file</span> <span class="na">target=</span><span class="s">"AndroidManifest.xml"</span> <span class="na">parent=</span><span class="s">"/*"</span> <span class="na">xmlns:android=</span><span class="s">"http://schemas.android.com/apk/res/android"</span><span class="nt">></span>
+ <span class="nt"><uses-permission</span> <span class="na">android:name=</span><span class="s">"android.permission.WRITE_EXTERNAL_STORAGE"</span> <span class="na">android:maxSdkVersion=</span><span class="s">"28"</span> <span class="nt">/></span>
+<span class="nt"></config-file></span>
+</code></pre></div></div>
+
+<p>Android 10 (API 29) and later devices does not require <code>WRITE_EXTERNAL_STORAGE</code> permission. If your application only supports Android 10 or later, then this step is not necessary.</p>
+
+<h4>FILE_URI Usage</h4>
+
+<p>When <code>FILE_URI</code> is used, the returned path is not directly usable. The file path needs to be resolved into
+a DOM-usable URL using the <a href="https://github.com/apache/cordova-plugin-file">Cordova File Plugin</a>.</p>
+
+<p>Additionally, the file URIs returned is a temporary read access grant. The OS reserves the right to revoke permission to access the resource, which typically occurs after the app has been closed. For images captured using the camera, the image is stored in a temporary location which can be cleared at any time, usually after the app exits. It's the application's decision to decide how the content should be used depending on their use cases.</p>
+
+<p>For persistent access to the content, the resource should be copied to your app's storage container. An example use case is an app allowing an user to select a profile picture from their gallery or camera. The application will need
+consistent access to that resource, so it's not suitable to retain the temporary access path. So the appplication should copy the resource to a persistent location.</p>
+
+<p>For use cases that involve temporary use, it is valid and safe to use the temporary file path to display the content. An example of this could be an image editing application, rendering the data into a canvas.</p>
+
+<p><strong>NOTE</strong>: The returned schemes is an implementation detail. Do not assume that it will always be a <code>file://</code> URI.</p>
+
<p><strong>Supported Platforms</strong></p>
<ul>
@@ -2607,17 +2713,24 @@ after calling <a href="#module_camera.getPicture"><code>camera.getPicture</code>
<tr>
<td>imageData</td>
<td><code>string</code></td>
- <td>Base64 encoding of the image data, <em>or</em> the image file URI, depending on <a href="#module_camera.CameraOptions"><code>cameraOptions</code></a> in effect.</td>
+ <td>Data URI, <em>or</em> the image file URI, depending on <a href="#module_camera.CameraOptions"><code>cameraOptions</code></a> in effect.</td>
</tr>
</tbody>
</table>
<p><strong>Example</strong></p>
-<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Show image</span>
-<span class="c1">//</span>
+<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Show image captured with FILE_URI</span>
+<span class="kd">function</span> <span class="nx">cameraCallback</span><span class="p">(</span><span class="nx">imageData</span><span class="p">)</span> <span class="p">{</span>
+ <span class="nb">window</span><span class="p">.</span><span class="nx">resolveLocalFileSystemURL</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="p">(</span><span class="nx">entry</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span>
+ <span class="kd">let</span> <span class="nx">image</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">myImage</span><span class="dl">'</span><span class="p">);</span>
+ <span class="nx">image</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">toURL</span><span class="p">();</span>
+ <span class="p">},</span> <span class="nx">onError</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="c1">// Show image captured with DATA_URL</span>
<span class="kd">function</span> <span class="nx">cameraCallback</span><span class="p">(</span><span class="nx">imageData</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">image</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">myImage</span><span class="dl">'</span><span class="p">);</span>
- <span class="nx">image</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">data:image/jpeg;base64,</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">imageData</span><span class="p">;</span>
+ <span class="nx">image</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="nx">imageData</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>
<p><a name="module_camera.CameraOptions"></a></p>
@@ -2660,10 +2773,10 @@ after calling <a href="#module_camera.getPicture"><code>camera.getPicture</code>
<td>Set the source of the picture.</td>
</tr>
<tr>
- <td>allowEdit</td>
+ <td><del>allowEdit</del></td>
<td><code>Boolean</code></td>
<td><code>false</code></td>
- <td>Allow simple editing of image before selection.</td>
+ <td><strong>Deprecated</strong>. Allow simple editing of image before selection.</td>
</tr>
<tr>
<td>encodingType</td>
@@ -2699,7 +2812,7 @@ after calling <a href="#module_camera.getPicture"><code>camera.getPicture</code>
<td>saveToPhotoAlbum</td>
<td><code>Boolean</code></td>
<td> </td>
- <td>Save the image to the photo album on the device after capture.</td>
+ <td>Save the image to the photo album on the device after capture.<br />See <a href="#cameragetpicturesuccesscallback-errorcallback-options">Android Quirks</a>.</td>
</tr>
<tr>
<td>popoverOptions</td>
@@ -2743,7 +2856,7 @@ after calling <a href="#module_camera.getPicture"><code>camera.getPicture</code>
<td>DATA_URL</td>
<td><code>number</code></td>
<td><code>0</code></td>
- <td>Return base64 encoded string. DATA_URL can be very memory intensive and cause app crashes or out of memory errors. Use FILE_URI if possible</td>
+ <td>Return data uri. DATA_URL can be very memory intensive and cause app crashes or out of memory errors. Use FILE_URI if possible</td>
</tr>
<tr>
<td>FILE_URI</td>
@@ -3041,39 +3154,43 @@ location.</p>
<p>Take a photo and retrieve the image's file location:</p>
-<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
- destinationType: Camera.DestinationType.FILE_URI });
+<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Don't forget to install cordova-plugin-file for resolveLocalFileSystemURL!</span>
-function onSuccess(imageURI) {
- var image = document.getElementById('myImage');
- image.src = imageURI;
-}
+<span class="nb">navigator</span><span class="p">.</span><span class="nx">camera</span><span class="p">.</span><span class="nx">getPicture</span><span class="p">(</span><span class="nx">onSuccess</span><span class="p">,</span> <span class="nx">onFail</span><span class="p">,</span> <span class="p">{</span> <span class="na">quality</span><span class="p">:</span> <span class="mi">50</span><span class="p">,</span>
+ <span class="na">destinationType</span><span class="p">:</span> <span class="nx">Camera</span><span class="p">.</span><span class="nx">DestinationType</span><span class="p">.</span><span class="nx">FILE_URI</span> <span class="p">});</span>
-function onFail(message) {
- alert('Failed because: ' + message);
-}
+<span class="kd">function</span> <span class="nx">onSuccess</span><span class="p">(</span><span class="nx">imageURI</span><span class="p">)</span> <span class="p">{</span>
+ <span class="nb">window</span><span class="p">.</span><span class="nx">resolveLocalFileSystemURL</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="p">(</span><span class="nx">entry</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span>
+ <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">image</span><span class="dl">'</span><span class="p">);</span>
+ <span class="nx">img</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">toURL</span><span class="p">();</span>
+ <span class="p">},</span> <span class="nx">onFail</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kd">function</span> <span class="nx">onFail</span><span class="p">(</span><span class="nx">message</span><span class="p">)</span> <span class="p">{</span>
+ <span class="nx">alert</span><span class="p">(</span><span class="dl">'</span><span class="s1">Failed because: </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">message</span><span class="p">);</span>
+<span class="p">}</span>
</code></pre></div></div>
<p>Take a photo and retrieve it as a Base64-encoded image:</p>
-<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/**
+<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/**
* Warning: Using DATA_URL is not recommended! The DATA_URL destination
* type is very memory intensive, even with a low quality setting. Using it
* can result in out of memory errors and application crashes. Use FILE_URI
* instead.
- */
-navigator.camera.getPicture(onSuccess, onFail, { quality: 25,
- destinationType: Camera.DestinationType.DATA_URL
-});
-
-function onSuccess(imageData) {
- var image = document.getElementById('myImage');
- image.src = "data:image/jpeg;base64," + imageData;
-}
+ */</span>
+<span class="nb">navigator</span><span class="p">.</span><span class="nx">camera</span><span class="p">.</span><span class="nx">getPicture</span><span class="p">(</span><span class="nx">onSuccess</span><span class="p">,</span> <span class="nx">onFail</span><span class="p">,</span> <span class="p">{</span> <span class="na">quality</span><span class="p">:</span> <span class="mi">25</span><span class="p">,</span>
+ <span class="na">destinationType</span><span class="p">:</span> <span class="nx">Camera</span><span class="p">.</span><span class="nx">DestinationType</span><span class="p">.</span><span class="nx">DATA_URL</span>
+<span class="p">});</span>
-function onFail(message) {
- alert('Failed because: ' + message);
-}
+<span class="kd">function</span> <span class="nx">onSuccess</span><span class="p">(</span><span class="nx">imageData</span><span class="p">)</span> <span class="p">{</span>
+ <span class="kd">var</span> <span class="nx">image</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">myImage</span><span class="dl">'</span><span class="p">);</span>
+ <span class="nx">image</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="nx">imageData</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kd">function</span> <span class="nx">onFail</span><span class="p">(</span><span class="nx">message</span><span class="p">)</span> <span class="p">{</span>
+ <span class="nx">alert</span><span class="p">(</span><span class="dl">'</span><span class="s1">Failed because: </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">message</span><span class="p">);</span>
+<span class="p">}</span>
</code></pre></div></div>
<h4>Preferences (iOS)</h4>
@@ -3100,7 +3217,7 @@ successful.</p>
<h4>Browser Quirks</h4>
-<p>Can only return photos as Base64-encoded image.</p>
+<p>Can only return photos as data URI image.</p>
<h4>iOS Quirks</h4>
@@ -3109,9 +3226,9 @@ can cause problems. Wrap the alert within a <code>setTimeout()</code> to allow
the iOS image picker or popover to fully close before the alert
displays:</p>
-<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>setTimeout(function() {
- // do your thing here!
-}, 0);
+<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
+ <span class="c1">// do your thing here!</span>
+<span class="p">},</span> <span class="mi">0</span><span class="p">);</span>
</code></pre></div></div>
<h2><code>CameraOptions</code> Errata <a name="CameraOptions-quirks"></a></h2>
@@ -3133,12 +3250,6 @@ displays:</p>
</li>
</ul>
-<h4>iOS Quirks</h4>
-
-<ul>
- <li>When using <code>destinationType.FILE_URI</code>, photos are saved in the application's temporary directory. The contents of the application's temporary directory is deleted when the application ends.</li>
-</ul>
-
<h2>Sample: Take Pictures, Select Pictures from the Picture Library, and Get Thumbnails <a name="sample"></a></h2>
<p>The Camera plugin allows you to do things like open the device's Camera app and take a picture, or open the file picker and select one. The code snippets in this section demonstrate different tasks including:</p>
@@ -3281,52 +3392,36 @@ displays:</p>
<h2>Take a picture and get a FileEntry Object <a name="convert"></a></h2>
-<p>If you want to do something like copy the image to another location, or upload it somewhere using the FileTransfer plugin, you need to get a FileEntry object for the returned picture. To do that, call <code>window.resolveLocalFileSystemURL</code> on the file URI returned by the Camera app. If you need to use a FileEntry object, set the <code>destinationType</code> to <code>Camera.DestinationType.FILE_URI</code> in your CameraOptions object (this is also the default value).</p>
+<p>If you want to do something like copy the image to another location, or upload it somewhere, an <code>FileEntry</code> is needed for the returned picture. To do this, call <code>window.resolveLocalFileSystemURL</code> on the file URI returned by the Camera app. If you need to use a FileEntry object, set the <code>destinationType</code> to <code>Camera.DestinationType.FILE_URI</code> in your CameraOptions object (this is also the default value).</p>
-<blockquote>
- <p><em>Note</em> You need the <a href="https://www.npmjs.com/package/cordova-plugin-file">File plugin</a> to call <code>window.resolveLocalFileSystemURL</code>.</p>
-</blockquote>
+<p><strong>NOTE:</strong> You need the <a href="https://www.npmjs.com/package/cordova-plugin-file">File plugin</a> to call <code>window.resolveLocalFileSystemURL</code>.</p>
<p>Here is the call to <code>window.resolveLocalFileSystemURL</code>. The image URI is passed to this function from the success callback of <code>getPicture</code>. The success handler of <code>resolveLocalFileSystemURL</code> receives the FileEntry object.</p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">getFileEntry</span><span class="p">(</span><span class="nx">imgUri</span><span class="p">)</span> <span class="p">{</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">resolveLocalFileSystemURL</span><span class="p">(</span><span class="nx">imgUri</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">success</span><span class="p">(</span><span class="nx">fileEntry</span><span class="p">)</span> <span class="p">{</span>
- <span class="c1">// Do something with the FileEntry object, like write to it, upload it, etc.</span>
- <span class="c1">// writeFile(fileEntry, imgUri);</span>
- <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">"</span><span class="s2">got file: </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">fileEntry</span><span class="p">.</span><span class="nx">fullPath</span><span class="p">);</span>
- <span class="c1">// displayFileData(fileEntry.nativeURL, "Native URL");</span>
-
- <span class="p">},</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
- <span class="c1">// If don't get the FileEntry (which may happen when testing</span>
- <span class="c1">// on some emulators), copy to a new FileEntry.</span>
- <span class="nx">createNewFileEntry</span><span class="p">(</span><span class="nx">imgUri</span><span class="p">);</span>
- <span class="p">});</span>
-<span class="p">}</span>
-</code></pre></div></div>
-
-<p>In the example shown in the preceding code, you call the app's <code>createNewFileEntry</code> function if you don't get a valid FileEntry object. The image URI returned from the Camera app should result in a valid FileEntry, but platform behavior on some emulators may be different for files returned from the file picker.</p>
-
-<blockquote>
- <p><em>Note</em> To see an example of writing to a FileEntry, see the <a href="https://www.npmjs.com/package/cordova-plugin-file">File plugin README</a>.</p>
-</blockquote>
-
-<p>The code shown here creates a file in your app's cache (in sandboxed storage) named <code>tempFile.jpeg</code>. With the new FileEntry object, you can copy the image to the file or do something else like upload it.</p>
-
-<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">createNewFileEntry</span><span class="p">(</span><span class="nx">imgUri</span><span class="p">)</span> <span class="p">{</span>
- <span class="nb">window</span><span class="p">.</span><span class="nx">resolveLocalFileSystemURL</span><span class="p">(</span><span class="nx">cordova</span><span class="p">.</span><span class="nx">file</span><span class="p">.</span><span class="nx">cacheDirectory</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">success</span><span class="p">(</span><span class="nx">dirEntry</span><span class="p">)</span> <span class="p">{</span>
-
- <span class="c1">// JPEG file</span>
- <span class="nx">dirEntry</span><span class="p">.</span><span class="nx">getFile</span><span class="p">(</span><span class="dl">"</span><span class="s2">tempFile.jpeg</span><span class="dl">"</span><span class="p">,</span> <span class="p">{</span> <span class="na">create</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span> <span class="na">exclusive</span><span class="p">:</span> <span class="kc">false</span> <span class="p">},</span> <span class="k [...]
-
- <span class="c1">// Do something with it, like write to it, upload it, etc.</span>
- <span class="c1">// writeFile(fileEntry, imgUri);</span>
- <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">"</span><span class="s2">got file: </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">fileEntry</span><span class="p">.</span><span class="nx">fullPath</span><span class="p">);</span>
- <span class="c1">// displayFileData(fileEntry.fullPath, "File copied to");</span>
-
- <span class="p">},</span> <span class="nx">onErrorCreateFile</span><span class="p">);</span>
-
- <span class="p">},</span> <span class="nx">onErrorResolveUrl</span><span class="p">);</span>
+ <span class="c1">// Example 1: Copy to app data directory</span>
+ <span class="nb">window</span><span class="p">.</span><span class="nx">resolveLocalFileSystemURL</span><span class="p">(</span><span class="nx">cordova</span><span class="p">.</span><span class="nx">file</span><span class="p">.</span><span class="nx">dataDirectory</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">dataDirectoryEntry</span><span class="p">)</span> <span class="p">{</span>
+ <span class="nx">fileEntry</span><span class="p">.</span><span class="nx">copyTo</span><span class="p">(</span><span class="nx">dataDirectoryEntry</span><span class="p">,</span> <span class="dl">"</span><span class="s2">profilePic</span><span class="dl">"</span><span class="p">,</span> <span class="nx">onSuccess</span><span class="p">,</span> <span class="nx">onError</span><span class="p">);</span>
+ <span class="p">},</span> <span class="nx">onError</span><span class="p">);</span>
+
+ <span class="c1">// Example 2: Upload it!</span>
+ <span class="nx">fileEntry</span><span class="p">.</span><span class="nx">file</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">file</span><span class="p">)</span> <span class="p">{</span>
+ <span class="kd">var</span> <span class="nx">reader</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">FileReader</span><span class="p">();</span>
+
+ <span class="nx">reader</span><span class="p">.</span><span class="nx">onloadend</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
+ <span class="kd">var</span> <span class="nx">xhr</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">XMLHttpRequest</span><span class="p">();</span>
+ <span class="nx">xhr</span><span class="p">.</span><span class="nx">open</span><span class="p">(</span><span class="dl">'</span><span class="s1">POST</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">https://myserver.com/upload</span><span class="dl">'</span><span class="p">);</span>
+ <span class="nx">xhr</span><span class="p">.</span><span class="nx">onload</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
+ <span class="c1">// All done!</span>
+ <span class="p">};</span>
+ <span class="nx">xhr</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">result</span><span class="p">);</span>
+ <span class="p">};</span>
+
+ <span class="nx">reader</span><span class="p">.</span><span class="nx">readAsArrayBuffer</span><span class="p">(</span><span class="nx">file</span><span class="p">);</span>
+ <span class="p">},</span> <span class="nx">onError</span><span class="p">);</span>
+ <span class="p">},</span> <span class="nx">onError</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div>
diff --git a/feed.xml b/feed.xml
index ccb17cc640..3d75a93fec 100644
--- a/feed.xml
+++ b/feed.xml
@@ -6,10 +6,55 @@
</description>
<link>https://cordova.apache.org/</link>
<atom:link href="https://cordova.apache.org/feed.xml" rel="self" type="application/rss+xml"/>
- <pubDate>Thu, 24 Oct 2024 13:39:33 +0000</pubDate>
- <lastBuildDate>Thu, 24 Oct 2024 13:39:33 +0000</lastBuildDate>
+ <pubDate>Wed, 30 Oct 2024 22:15:25 +0000</pubDate>
+ <lastBuildDate>Wed, 30 Oct 2024 22:15:25 +0000</lastBuildDate>
<generator>Jekyll v4.3.4</generator>
+ <item>
+ <title>File Plugin 8.1.2 Released!</title>
+ <description><p>We are happy to announce that we have just released an update for <code>cordova-plugin-file</code>!</p>
+
+<ul>
+ <li><a href="https://www.npmjs.com/package/cordova-plugin-file">cordova-plugin-file@8.1.2</a></li>
+</ul>
+
+<p><strong>To upgrade:</strong></p>
+
+<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cordova plugin remove cordova-plugin-file
+cordova plugin add cordova-plugin-file@8.1.2
+</code></pre></div></div>
+
+<h2>Release Highlights</h2>
+
+<p>This patch is a regression fix. See <a href="https://cordova.apache.org/announcements/2024/10/23/cordova-plugin-file-8.1.1.html">8.1.1 release blog</a> post for more details.</p>
+
+<p>In 8.1.1, the <code>FileEntry.toURL()</code> method broke when used on any <code>file://</code> that didn&#39;t lead to the app&#39;s internal assets on Android. This is now corrected.</p>
+
+<p>This bug didn&#39;t effect iOS devices.</p>
+
+<p>Please report any issues you find by following the <a href="https://github.com/apache/cordova#filing-a-bug">How to File a Bug</a> guide!</p>
+
+<!--more-->
+<h1>Changes include:</h1>
+
+<p><strong>Fixes:</strong></p>
+<ul>
+ <li><a href="https://github.com/apache/cordova-plugin-file/pull/640">GH-640</a> fix(android): Regression breaking resolved DOM-usable file:// paths (#640)</li>
+</ul>
+</description>
+ <pubDate>Mon, 28 Oct 2024 00:00:00 +0000</pubDate>
+ <link>https://cordova.apache.org/announcements/2024/10/28/cordova-plugin-file-8.1.2.html</link>
+ <guid isPermaLink="true">https://cordova.apache.org/announcements/2024/10/28/cordova-plugin-file-8.1.2.html</guid>
+
+ <category>news</category>
+
+ <category>releases</category>
+
+
+ <category>announcements</category>
+
+ </item>
+
<item>
<title>File Plugin 8.1.1 Released!</title>
<description><p>We are happy to announce that we have just released an update for <code>cordova-plugin-file</code>!</p>
@@ -36,6 +81,8 @@ cordova plugin add cordova-plugin-file@8.1.1
<p>For iOS, there are no changes.</p>
+<p><em>Edit (2024-10-28)</em>: This patch introduces a regression on Android platforms when resolving <code>.toURL()</code> on some <code>file://</code> URIs. Please use upgrade to <code>cordova-plugin-file@8.1.2</code> instead.</p>
+
<p>Please report any issues you find by following the this <a href="https://github.com/apache/cordova#filing-a-bug">How to File a Bug</a> guide!</p>
<!--more-->
@@ -880,124 +927,5 @@ cordova platform add electron@4.0.0
</item>
- <item>
- <title>Geolocation Plugin 5.0.0 Released!</title>
- <description><p>We are happy to announce that we have just released an update for <code>cordova-plugin-geolocation</code>!</p>
-
-<ul>
- <li><a href="https://www.npmjs.com/package/cordova-plugin-geolocation">cordova-plugin-geolocation@5.0.0</a></li>
-</ul>
-
-<p><strong>To upgrade:</strong></p>
-
-<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cordova plugin remove cordova-plugin-geolocation
-cordova plugin add cordova-plugin-geolocation@5.0.0
-</code></pre></div></div>
-
-<h2>Release Highlights</h2>
-
-<h3>Breaking Changes</h3>
-
-<ul>
- <li><strong>Modern JavaScript</strong></li>
-</ul>
-
-<p>The JavaScript of the plugin has been upgraded to use ES6 features, such as <code>let</code> and <code>const</code>.</p>
-
-<p><strong>NOTE</strong>: This release has failed to upgrade required engines. Despite the declared requirement on <code>cordova-android</code> &gt;= 6.3.0 and no declared requirement on iOS, the new minimum requirements will be:</p>
-
-<ul>
- <li>cordova-ios 6 or later</li>
- <li>cordova-android 10 or later</li>
-</ul>
-
-<p>Earlier versions of these platforms may not work as expected. As always, it will be recommended to use the latest version available.
-The engines <em>may be corrected</em> in a patch release at a later date.</p>
-
-<ul>
- <li><strong>Cordova Windows Support Drop</strong></li>
-</ul>
-
-<p>Support for the deprecated <a href="https://github.com/apache/cordova-windows">cordova-windows</a> platform has been dropped and entirely removed in this release.</p>
-
-<h3>Notable Fixes</h3>
-
-<ul>
- <li>
- <p><strong>Sanity check on Geolocation serialization on iOS</strong></p>
-
- <p>A rare occurrence of <code>Infinity</code> values would cause a crash during JSON serialization on iOS. This is now caught and will now produce a Position Unavailable error gracefully.</p>
- </li>
- <li>
- <p><strong>Improved Android Permission Handling</strong></p>
-
- <p>Android has received fixes for when handling coarse vs fine location permissions for improved compatibility on Android 12+ devices. Android will now handle the following situations:</p>
-
- <ol>
- <li>Permission request that consists of only <code>COARSE</code> location.</li>
- <li>Permission request that consists of both <code>COARSE</code> and <code>FINE</code> (high accuracy) location.</li>
- <li>Permission upgrade for when <code>COARSE</code> is granted, but <code>FINE</code> is required.</li>
- </ol>
- </li>
-</ul>
-
-<p>For more details on these changes, see the <a href="https://github.com/apache/cordova-plugin-geolocation/pull/250">PR</a>.</p>
-
-<ul>
- <li><strong>Improved W3C Compliance</strong></li>
-</ul>
-
-<p>Fixes has been made to the <code>heading</code> and <code>speed</code> to better conform to the <a href="https://www.w3.org/TR/geolocation/#constructing-a-geolocationposition">W3C Geolocation API</a> specification. If either of these values are not determined to be expected valid range, they will now return <code>null</code> to provide better consistency between Cordova and other web environments.</p>
-
-<p>Please report any issues you find by following the this <a href="https://github.com/apache/cordova#filing-a-bug">How to File a Bug</a> guide!</p>
-
-<!--more-->
-<h2>Changes Log</h2>
-
-<p><strong>Breaking Changes:</strong></p>
-
-<ul>
- <li><a href="https://github.com/apache/cordova-plugin-media-capture/pull/260">GH-260</a> chore(eslint): config upgrade to 5.0.0 (#260)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/267">GH-267</a> chore(windows)!: Remove <strong>Windows</strong> platform (#267)</li>
-</ul>
-
-<p><strong>Fixes:</strong></p>
-<ul>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/270">GH-270</a> fix: heading speed w3c spec (#270)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/250">GH-250</a> (android) fix: respect requested location accuracy when checking/requesting permissions on <strong>Android</strong> 12+ Handle bug on API &lt; 32 when requesting COARSE permission results in TIMEOUT error.</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/231">GH-231</a> (ios) fix: Check NSDictionary constructed from native CLLocation data is valid for conversion to JSON before attempting conversion. Prevents crashes due to values invalid for JSON conversion such as INFINITY.</li>
-</ul>
-
-<p><strong>Other Changes:</strong></p>
-
-<ul>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/247">GH-247</a> ci(android): update java requirement for <code>cordova-android</code>@11 (#247)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/241">GH-241</a> ci(ios): update workflow w/ <strong>iOS</strong> 15 (#241)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/239">GH-239</a> ci: add action-badge (#239)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/238">GH-238</a> ci: remove travis &amp; appveyor (#238)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/236">GH-236</a> chore: npmrc (#236)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/234">GH-234</a> ci: add gh-actions workflows (#234)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/217">GH-217</a> ci: add node-14.x to workflow (#217)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/251">GH-251</a> ci: sync workflow with paramedic (#251)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/249">GH-249</a> dep(npm): bump package-lock v2 w/ rebuild (#249)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/268">GH-268</a> ci(gh-action): Sync with paramedic configs (#268)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/261">GH-261</a> ci: Sync with paramedic. Removed API 22 &amp; 31, added API 24 &amp; API 33 (#261)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/265">GH-265</a> chore: package-lock (#265)</li>
- <li><a href="https://github.com/apache/cordova-plugin-geolocation/pull/269">GH-269</a> test(windows): Remove window platform references from tests (#269)</li>
-</ul>
-</description>
- <pubDate>Thu, 21 Sep 2023 00:00:00 +0000</pubDate>
- <link>https://cordova.apache.org/news/2023/09/21/geolocation-plugin-5.0.0.html</link>
- <guid isPermaLink="true">https://cordova.apache.org/news/2023/09/21/geolocation-plugin-5.0.0.html</guid>
-
- <category>release</category>
-
- <category>plugins</category>
-
-
- <category>news</category>
-
- </item>
-
</channel>
</rss>
diff --git a/sitemap.xml b/sitemap.xml
index 8ee4d3fea6..956d19b89b 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -3,6 +3,11 @@
<!-- posts -->
+<url>
+ <loc>https://cordova.apache.org/announcements/2024/10/28/cordova-plugin-file-8.1.2.html</loc>
+</url>
+
+
<url>
<loc>https://cordova.apache.org/announcements/2024/10/23/cordova-plugin-file-8.1.1.html</loc>
</url>
diff --git a/static/js/index.js b/static/js/index.js
index 05a0e6cc65..067ff952b2 100644
--- a/static/js/index.js
+++ b/static/js/index.js
@@ -47,6 +47,7 @@ function checkNotification() {
var dates = [];
if (lastVisit != "") {
+ dates.push('Mon, 28 Oct 2024 00:00:00 +0000');
dates.push('Wed, 23 Oct 2024 00:00:00 +0000');
dates.push('Mon, 21 Oct 2024 00:00:00 +0000');
dates.push('Wed, 24 Jul 2024 00:00:00 +0000');
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org