Back to Cordova

2020 09 23

slack-digest/2020-09-23.md

latest11.9 KB
Original Source

Cordova Slack Digest

Wed, 23 Sep 2020 08:25:00 GMT

User count: 4129

Join the conversation at slack.cordova.io

Channel #general (11 messages)


Tue, 22 Sep 2020 11:51:53 GMT

@aquinn says

old but here it is: https://stackoverflow.com/questions/64008985/angularjs-custom-directive-for-form-validation-for-date-inputs

Tue, 22 Sep 2020 12:03:31 GMT

@pratiksha.bhavsar0895 says

Can we do it like this way : as soon as effectivedate is selected in expirydate selection disable the date which are less than or equal to effectivedate ? I mean you can just limit the expiry date. And at the beginning you can just disable the expiry date input ?

Tue, 22 Sep 2020 12:04:08 GMT

@pratiksha.bhavsar0895 says

I remember i have tried something like this in some previous project with respective to start & end date.

Tue, 22 Sep 2020 12:12:08 GMT

@yuanzuo says

I am not sure if this is android studio version issue. I tried command line cordova android build, got this error: >cordova build android Checking Java JDK and Android SDK versions ANDROID_SDK_ROOT=undefined (recommended setting) ANDROID_HOME=C:\Users\yzuo\AppData\Local\Android\Sdk (DEPRECATED) Using Android SDK: C:\Users\yzuo\AppData\Local\Android\Sdk Subproject Path: CordovaLib Subproject Path: app Downloading https://services.gradle.org/distributions/gradle-6.5-all.zip

Exception in thread "main" http://javax.net|javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Tue, 22 Sep 2020 22:23:39 GMT

@owenocq says

I've got a white flash on startup before the WebView appears on ipad.

I've tried <preference name="BackgroundColor" value="#00000000"/> and <preference name="BackgroundColor" value="black"/> in my config.xml

And I think my LaunchStoryboard is set up with all images, and the CDVLaunchScreen is selected in the general xcode project settings.

I've previous a long time agao used an older version of CDVsplashscreen to fix the issue but the old version of that plugin and the current version don't appear to be working for me. 

I'm using Cordova 5.1.1 (can't use 6.1.1 because scaling is handled differently on iPad 12.9")

Is there way to make the white flash black? Or a way to extend the time LaunchStoryboard Images.xcassets stay on screen to give time for WebView to load?

Wed, 23 Sep 2020 00:48:55 GMT

@ebrommers says

I’ve been investigating Ionic Appflow as a replacement for PhoneGap Build in our CM process. Am I doing things wrong, or can we not build for iOS / Android without upgrading to a paid account? The only target platform I’m seeing that allows me to build is “Web”.

Wed, 23 Sep 2020 00:52:45 GMT

@norman137 says

https://ionicframework.com/pricing/compare

Wed, 23 Sep 2020 00:53:36 GMT

@norman137 says

Not really familiar with ionic, some others here can probably provide more insight, but looks like to compile native app binaries using appflow, it requires a paid account.

Wed, 23 Sep 2020 00:54:20 GMT

@ebrommers says

Awesome — thanks. Looks like I’ll be running from the CLI (Open Source, empty wallet) 😂

Wed, 23 Sep 2020 07:44:47 GMT

@jcesarmobile says

There was this coupon code for 1 month free, not sure if still valid

Wed, 23 Sep 2020 07:44:50 GMT

@jcesarmobile says

BUILDWITHUS

Channel #cordova-ios (1 messages)


Wed, 23 Sep 2020 00:52:56 GMT

@dpogue says

oooh, so close and yet so far https://github.com/WebKit/webkit/commit/9135bf5eb1e1a98c54b7eca755fa8419f5a42ab5

Channel #cordova-android (2 messages)


Tue, 22 Sep 2020 21:46:30 GMT

@ucheozoemena says

Hi folks, question regarding a custom plugin I'm working on.

I have a plugin for getting media from the device gallery, and I have a LinearLayout that contains a TextView for showing the duration of videos in the gallery. However, I'm seeing some unusual behavior where the duration gets applied incorrectly to an image if the image is shown in a grid square that previously contained a video thumbnail. The LinearLayout has visibility set to GONE by default, and it's changed to VISIBLE if it's a video thumbnail. This is the relevant snippet of code:

//
<?xml version="1.0" encoding="utf-8"?>
&lt;FrameLayout xmlns:android="<http://schemas.android.com/apk/res/android>"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#DDDDDD"
    android:layout_margin="2dp"&gt;
    &lt;ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:id="@+id/vImage"/&gt;
    &lt;LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="#80000000"
        android:orientation="vertical"
        android:id="@+id/vidDurationContainer"
        android:visibility="gone" &gt;

        &lt;TextView
            android:id="@+id/vidDuration"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:paddingLeft="10dip"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Image"
            android:textColor="#FFFFFF"
            android:textIsSelectable="false"
            android:textSize="20sp" /&gt;
    &lt;/LinearLayout&gt;
    &lt;CheckBox
        android:id="@+id/checkBox"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="visible"
        android:button="@android:color/transparent"
        android:background="@drawable/cameraroll_item_selection" /&gt;
&lt;/FrameLayout&gt;```
```// Gallery.java file
        ...
        public PictureView(...) {
            LayoutInflater.from(getContext()).inflate(getResourceId(getContext(), "layout", "view"), this);
            vImage = (ImageView)findViewById(getResourceId(getContext(), "id", "vImage"));
            checkBox = (CheckBox)findViewById(getResourceId(getContext(), "id", "checkBox"));
            vidDurationContainer = (LinearLayout)findViewById(getResourceId(getContext(), "id", "vidDurationContainer"));
            vidDuration = (TextView)findViewById(getResourceId(getContext(), "id", "vidDuration"));
        }

        public void load(...) {
            ...
            vImage.setImageResource(0);
            vImage.setVisibility(INVISIBLE);
            loader.loadPicture(...);
        }

        @Override
        public void onLoad(PictureInfo picture) {
            if (this.pictureInfo != picture) {
                return;
            }
            new Handler(Looper.getMainLooper()).post(new Runnable() {
                @Override
                public void run() {
                    vImage.setImageBitmap(pictureInfo.thumbnail);
                    vImage.setVisibility(VISIBLE);
                    if (pictureInfo.isVideo) {
                        vidDurationContainer.setVisibility(VISIBLE);
                        vidDuration.setText(String.valueOf(pictureInfo.duration));
                    } else {
                        vidDurationContainer.setVisibility(GONE);
                    }
                }
            });
        }

        @Override
        public void loadPicture(final PictureInfo pictureInfo, ...) {
            ...
            executor.execute(new Runnable() {
                @Override
                public void run() {
                    ...
                    synchronized (pictureCache) {
                        Bitmap cachedBitmap = pictureCache.get(pictureInfo.uri);
                        if (cachedBitmap != null) {
                            pictureInfo.thumbnail = cachedBitmap;
                            callback.onLoad(pictureInfo);
                            return;
                        }
                    }
                    ...
                    if (pictureInfo.thumbnail != null) {
                        callback.onLoad(pictureInfo);
                        synchronized (pictureCache) {
                            pictureCache.put(pictureInfo.uri, pictureInfo.thumbnail);
                        }
                    }
                }
            });
        }
        ...```
I've removed most of the other code (indicated by `...`) to try to highlight what I think are the most relevant bits. This is what the problem looks like:
- when I open the gallery: the first 3 thumbnails that show "7.0" duration are video thumbnails, the fourth is an image. This is the correct behavior

- I then scroll down the gallery such that that particular row is no longer visible, then I scroll back up to this row, and the "7.0" is no longer showing
How can I fix this? The expected behavior is that the duration is always shown for video thumbnails and not shown for images. Clearly something is wrong with the logic to show/hide the duration. Any help will be greatly appreciated, thanks!

Wed, 23 Sep 2020 07:59:15 GMT

@pratiksha.bhavsar0895 says

Hi team did anyone here faced issue with filetransfer plugin when server is pointing to https://stagingDomain1..... (https) I got following error in android: W/FileTransfer: Error getting HTTP status code from connection. http://javax.net|javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. at http://com.android.org|com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:219) at http://com.android.okhttp.internal.io|com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192) at http://com.android.okhttp.internal.io|com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149) at http://com.android.okhttp.internal.io|com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(Unknown Source:0) at org.apache.cordova.filetransfer.FileTransfer$1.run(FileTransfer.java:425) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764) While the api & file transfer plugin worked properly when switch to our other staging domain with : http://stagingDomain2.... (http). For IOS worked properly on http as well as https domain. Thanks & Kind Regards, Pratiksha