Skip to content

Commit 717a76f

Browse files
authored
fix: use android resource ids instead of names (#541)
* fix: use android resource ids instead of names * fix e2e test
1 parent 7893787 commit 717a76f

File tree

8 files changed

+500
-426
lines changed

8 files changed

+500
-426
lines changed

.releaserc

+7-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33
"@semantic-release/commit-analyzer",
44
"@semantic-release/release-notes-generator",
55
"@semantic-release/npm",
6-
"@semantic-release/github",
6+
[
7+
"@semantic-release/github",
8+
{
9+
"successComment": ":tada: This issue has been resolved in version ${nextRelease.version} :tada:\n\nIf this package helps you, consider [sponsoring us](https://github.com/sponsors/react-native-datetimepicker)! :rocket:",
10+
"addReleases": "bottom"
11+
}
12+
],
713
[
814
"@semantic-release/git",
915
{

android/src/main/java/com/reactcommunity/rndatetimepicker/RNDatePickerDialogFragment.java

+4-7
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,12 @@ DatePickerDialog getDialog(
6969
switch (display) {
7070
case CALENDAR:
7171
case SPINNER:
72-
String resourceName = display == RNDatePickerDisplay.CALENDAR
73-
? "CalendarDatePickerDialog"
74-
: "SpinnerDatePickerDialog";
72+
int theme = display == RNDatePickerDisplay.CALENDAR
73+
? R.style.CalendarDatePickerDialog
74+
: R.style.SpinnerDatePickerDialog;
7575
return new RNDismissableDatePickerDialog(
7676
activityContext,
77-
activityContext.getResources().getIdentifier(
78-
resourceName,
79-
"style",
80-
activityContext.getPackageName()),
77+
theme,
8178
onDateSetListener,
8279
year,
8380
month,

android/src/main/java/com/reactcommunity/rndatetimepicker/RNTimePickerDialogFragment.java

+4-8
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,12 @@ static TimePickerDialog getDialog(
7272
}
7373

7474
if (display == RNTimePickerDisplay.CLOCK || display == RNTimePickerDisplay.SPINNER) {
75-
String resourceName = display == RNTimePickerDisplay.CLOCK
76-
? "ClockTimePickerDialog"
77-
: "SpinnerTimePickerDialog";
75+
int theme = display == RNTimePickerDisplay.CLOCK
76+
? R.style.ClockTimePickerDialog
77+
: R.style.SpinnerTimePickerDialog;
7878
return new RNDismissableTimePickerDialog(
7979
activityContext,
80-
activityContext.getResources().getIdentifier(
81-
resourceName,
82-
"style",
83-
activityContext.getPackageName()
84-
),
80+
theme,
8581
onTimeSetListener,
8682
hour,
8783
minute,

android/src/main/res/values/styles.xml

+26
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,33 @@
11
<resources xmlns:tools="http://schemas.android.com/tools">
2+
<style name="SpinnerDatePickerDialog" parent="Theme.AppCompat.Light.Dialog" tools:targetApi="lollipop">
3+
<item name="android:datePickerStyle">@style/SpinnerDatePickerStyle</item>
4+
</style>
5+
6+
<style name="SpinnerDatePickerStyle" parent="android:Widget.Material.Light.DatePicker" tools:targetApi="lollipop">
7+
<item name="android:datePickerMode">spinner</item>
8+
</style>
9+
10+
<style name="CalendarDatePickerDialog" parent="Theme.AppCompat.Light.Dialog" tools:targetApi="lollipop">
11+
<item name="android:datePickerStyle">@style/CalendarDatePickerStyle</item>
12+
</style>
13+
14+
<style name="CalendarDatePickerStyle" parent="android:Widget.Material.Light.DatePicker" tools:targetApi="lollipop">
15+
<item name="android:datePickerMode">calendar</item>
16+
</style>
17+
18+
19+
<style name="ClockTimePickerDialog" parent="Theme.AppCompat.Light.Dialog" tools:targetApi="lollipop">
20+
<item name="android:timePickerStyle">@style/ClockTimePickerStyle</item>
21+
</style>
22+
23+
<style name="ClockTimePickerStyle" parent="android:Widget.Material.Light.TimePicker" tools:targetApi="lollipop">
24+
<item name="android:timePickerMode">clock</item>
25+
</style>
26+
227
<style name="SpinnerTimePickerDialog" parent="Theme.AppCompat.Light.Dialog" tools:targetApi="lollipop">
328
<item name="android:timePickerStyle">@style/SpinnerTimePickerStyle</item>
429
</style>
30+
531
<style name="SpinnerTimePickerStyle" parent="android:Widget.Material.Light.TimePicker" tools:targetApi="lollipop">
632
<item name="android:timePickerMode">spinner</item>
733
</style>

example/android/app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def jscFlavor = 'org.webkit:android-jsc:+'
121121
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
122122
* and the benefits of using Hermes will therefore be sharply reduced.
123123
*/
124-
def enableHermes = project.ext.react.get("enableHermes", false);
124+
def enableHermes = project.ext.react.get("enableHermes", false)
125125

126126
/**
127127
* Architectures to build native code for in debug.
@@ -221,7 +221,7 @@ dependencies {
221221
androidTestImplementation('com.wix:detox:+')
222222

223223
if (enableHermes) {
224-
def hermesPath = "../../../node_modules/hermes-engine/android/";
224+
def hermesPath = "../../../node_modules/hermes-engine/android/"
225225
debugImplementation files(hermesPath + "hermes-debug.aar")
226226
releaseImplementation files(hermesPath + "hermes-release.aar")
227227
} else {

example/e2e/detoxTest.spec.js

+13-9
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const {
1616
userDismissesCompactDatePicker,
1717
} = require('./utils/actions');
1818
const {isIOS, wait, Platform} = require('./utils/utils');
19+
const {device} = require('detox');
1920

2021
describe('Example', () => {
2122
const getPickerDisplay = () => {
@@ -82,18 +83,21 @@ describe('Example', () => {
8283

8384
if (isIOS()) {
8485
const testElement = getDateTimePickerControlIOS();
85-
await testElement.setDatePickerDate('2021-12-12', 'yyyy-MM-dd');
86+
await testElement.setDatePickerDate('2021-11-02', 'yyyy-MM-dd');
8687
} else {
87-
const calendarHorizontalScrollView = element(
88-
by
89-
.type('android.widget.ScrollView')
90-
.withAncestor(by.type('android.widget.DatePicker')),
91-
);
92-
await calendarHorizontalScrollView.swipe('left', 'fast', 1);
93-
await calendarHorizontalScrollView.tap({x: 50, y: 200}); // select some date
88+
const uiDevice = device.getUiDevice();
89+
const focusSecondOfNovemberInCalendar = async () => {
90+
await uiDevice.pressDPadDown();
91+
await uiDevice.pressDPadDown();
92+
await uiDevice.pressDPadDown();
93+
};
94+
await focusSecondOfNovemberInCalendar();
95+
96+
await uiDevice.pressEnter();
97+
9498
await userTapsOkButtonAndroid();
9599
}
96-
await expect(getDateText()).toHaveText('12/12/2021');
100+
await expect(getDateText()).toHaveText('11/02/2021');
97101
});
98102

99103
it('should show time picker after tapping timePicker button', async () => {

package.json

+8-8
Original file line numberDiff line numberDiff line change
@@ -66,23 +66,23 @@
6666
"@react-native-segmented-control/segmented-control": "^2.4.0",
6767
"@semantic-release/git": "^10.0.1",
6868
"@testing-library/react-native": "^8.0.0",
69-
"babel-jest": "^27.3.1",
70-
"detox": "19.0.0",
69+
"babel-jest": "^27.4.4",
70+
"detox": "19.3.0",
7171
"eslint": "^7",
7272
"eslint-plugin-prettier": "^4.0.0",
7373
"flow-bin": "^0.158.0",
7474
"flow-typed": "^3.4.0",
75-
"jest": "^27.3.1",
76-
"jest-circus": "^27.3.1",
75+
"jest": "^27.4.4",
76+
"jest-circus": "^27.4.4",
7777
"metro-react-native-babel-preset": "^0.66.2",
7878
"moment": "^2.24.0",
79-
"prettier": "^2.4.1",
79+
"prettier": "^2.5.1",
8080
"react": "17.0.2",
81-
"react-native": "^0.66.3",
82-
"react-native-localize": "^2.1.5",
81+
"react-native": "^0.66.4",
82+
"react-native-localize": "^2.1.6",
8383
"react-native-windows": "^0.66.3",
8484
"react-test-renderer": "17.0.2",
85-
"semantic-release": "^18.0.0"
85+
"semantic-release": "^18.0.1"
8686
},
8787
"dependencies": {
8888
"invariant": "^2.2.4"

0 commit comments

Comments
 (0)