Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Device #954

Closed
Vanclief opened this issue Jan 9, 2017 · 2 comments
Closed

Device #954

Vanclief opened this issue Jan 9, 2017 · 2 comments
Assignees

Comments

@Vanclief
Copy link

Vanclief commented Jan 9, 2017

Im aware of the changes stated in 2.11.11 where Device.device.uuid becomes Device.uuid.

BREAKING CHANGES

device: device property no longer exists
For example, Device.device.platform becomes Device.platform now.

https://github.com/driftyco/ionic-native/releases

Problem description: When calling Device.uuid in the browser, instead of getting return undefined, I get an empty object. This happens since 2.11.11

Procedure: Console.log(Device.uuid);
Expected Outcome: Undefined
Experienced Outcome: {}

@ihadeed
Copy link
Collaborator

ihadeed commented Jan 9, 2017

That's happening because you're running on ionic serve and the cordova platform isn't available there. Ionic Native returns {} when a property doesn't exist (when cordova isn't available), and it also throws a console warning to let the developer know. See https://github.com/driftyco/ionic-native/blob/master/src/plugins/plugin.ts#L433.

I should probably change that and make it return null.

@Vanclief
Copy link
Author

@ihadeed Yes I understand. I used to have a method to check if cordova wasn't available, that used to work perfectly before this change. I think it would be great to make it return an null as you say, easier to check for.

Thanks for the quick reply.

@ihadeed ihadeed self-assigned this Jan 10, 2017
peterkelly added a commit to peterkelly/ionic-native that referenced this issue Jan 22, 2017
This reverts part of commit 67adb23, which moved the call to getPlugin()
from within CordovaProperty() to a point where it was called too early.

When the CordovaProperty decorator is called on a property, the class
containing that call has not yet had its Plugin decorator called. Only
when the latter happens does pluginRef get set. Thus, attempting to
access pluginRef within CordovaProperty at the time of the call will
give undefined, and attemping to call getPlugin with an undefined value
will throw an exception:

    Runtime Error
    Cannot read property 'split' of undefined

    TypeError: Cannot read property 'split' of undefined
        at get
        at getPlugin
        at CordovaProperty
        at __decorate
        ...

The above message can be seen in the browser after running the 'ionic
serve' command.

This commit moves the getPlugin call back to the getters and setters
established by CordovaProperty, which are only called *after* the Plugin
decorator has finished executing.

closes danielsogl#954
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants