refactor: Use react-native-test-app to manage our test app - #142

Merged
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app
Aug 20, 2021
Merged

refactor: Use react-native-test-app to manage our test app#142
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app

Conversation

@Saadnajmi

@SaadnajmiSaadnajmi commented Jun 27, 2021

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the test app in the repo with one managed by React Native Test App. This is mainly inspired by my want to add macOS support, which is currently blocked by / tracked at #141. Still, setting up the template test app now will make standing up the macOS portion of the test app trivial come time.

"React Native Test App" provides test apps for all platforms as a package. It handles the native bits, allowing you the developer to focus on the JS. There are a few advantages to using this package:

  • It makes RN version updates easier, as it will handle the proper native code changes
  • It makes targeting new platforms (like macOS or Windows) easier, since it has a template to configure each platform's test app.

Steps

I tried to document my steps well with my individual commit messages. In essence:

mv example/ example2 # Move the existing test app out of the way for a bit
yarn add -D react-native-test-app
yarn init-test-app
# The options I chose
# ✔ What is the name of your test app? … MenuExample
# ✔ Which platforms do you need test apps for? › Android, iOS
# ✔ Where should we create the new project? … example
cd example

After this I did a few extra things:

  • Added generated lock files after running yarn / pod install in the new example test app folder
    • cd example && yarn && pod install --project-directory:ios
    • git add yarn.lock ios/Podfile.lock
  • Ran yarn lint --fix to fix lint errors in the generated test app (mostly double quotes vs single quotes)
  • Modified the example test app's package.json to include the following dependency so we can actually test menu:
    • "@react-native-menu/menu": "../"

Then finally, I copied over the JS source from the old test app, and deleted the old test app

rm example/index.js example/App.js
mv example2/index.tsx example.index.tsx
mv example2/src/App.tsx example/src/App.tsx
rm -rf example2/

Test Plan

Locally ran the iOS and Android test apps.

Screen Shot 2021-06-27 at 4 16 11 PM

@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Since I couldn't add you as reviewers..
@tido64 who maintains react-native-test-app
@Naturalclar who maintains react-native menu

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(. I decided to go forward with moving the test app anyway to make it easier to add macOS support in the fut
Keeping this as a draft at the moment because run-ios doesn't work. If that's not a blocker, I can make it a full PR. Working on filing the right bugs in the cli now =)

Comment threadexample/react-native.config.js Outdated
Comment threadexample/yarn.lock Outdated
Comment threadexample/package.json Outdated
@Saadnajmi
Saadnajmi marked this pull request as ready for review August 20, 2021 12:47
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

@Naturalclar This should be ready for review! It should also make updating to RN 0.65 very simple, I just didn't want to bundle that in the same review. Thanks @tido64 for helping fix upstream CLI issues!

@NaturalclarNaturalclar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Saadnajmi@tido64 awesome! thank you guys so much!

@Naturalclar
Naturalclar merged commit 22bc25b into react-native-menu:masterAug 20, 2021
@tido64

Copy link
Copy Markdown
Contributor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

@Saadnajmi
Saadnajmi deleted the new-test-app branch November 15, 2021 16:19
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

Yep! I have a working menu component I wrote for macOS elsewhere that I can port here once I get the chance!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@Saadnajmi@tido64@Naturalclar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

refactor: Use react-native-test-app to manage our test app - #142

Merged
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app
Aug 20, 2021
Merged

refactor: Use react-native-test-app to manage our test app#142
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app

Conversation

@Saadnajmi

@SaadnajmiSaadnajmi commented Jun 27, 2021

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the test app in the repo with one managed by React Native Test App. This is mainly inspired by my want to add macOS support, which is currently blocked by / tracked at #141. Still, setting up the template test app now will make standing up the macOS portion of the test app trivial come time.

"React Native Test App" provides test apps for all platforms as a package. It handles the native bits, allowing you the developer to focus on the JS. There are a few advantages to using this package:

  • It makes RN version updates easier, as it will handle the proper native code changes
  • It makes targeting new platforms (like macOS or Windows) easier, since it has a template to configure each platform's test app.

Steps

I tried to document my steps well with my individual commit messages. In essence:

mv example/ example2 # Move the existing test app out of the way for a bit
yarn add -D react-native-test-app
yarn init-test-app
# The options I chose
# ✔ What is the name of your test app? … MenuExample
# ✔ Which platforms do you need test apps for? › Android, iOS
# ✔ Where should we create the new project? … example
cd example

After this I did a few extra things:

  • Added generated lock files after running yarn / pod install in the new example test app folder
    • cd example && yarn && pod install --project-directory:ios
    • git add yarn.lock ios/Podfile.lock
  • Ran yarn lint --fix to fix lint errors in the generated test app (mostly double quotes vs single quotes)
  • Modified the example test app's package.json to include the following dependency so we can actually test menu:
    • "@react-native-menu/menu": "../"

Then finally, I copied over the JS source from the old test app, and deleted the old test app

rm example/index.js example/App.js
mv example2/index.tsx example.index.tsx
mv example2/src/App.tsx example/src/App.tsx
rm -rf example2/

Test Plan

Locally ran the iOS and Android test apps.

Screen Shot 2021-06-27 at 4 16 11 PM

@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Since I couldn't add you as reviewers..
@tido64 who maintains react-native-test-app
@Naturalclar who maintains react-native menu

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(. I decided to go forward with moving the test app anyway to make it easier to add macOS support in the fut
Keeping this as a draft at the moment because run-ios doesn't work. If that's not a blocker, I can make it a full PR. Working on filing the right bugs in the cli now =)

Comment threadexample/react-native.config.js Outdated
Comment threadexample/yarn.lock Outdated
Comment threadexample/package.json Outdated
@Saadnajmi
Saadnajmi marked this pull request as ready for review August 20, 2021 12:47
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

@Naturalclar This should be ready for review! It should also make updating to RN 0.65 very simple, I just didn't want to bundle that in the same review. Thanks @tido64 for helping fix upstream CLI issues!

@NaturalclarNaturalclar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Saadnajmi@tido64 awesome! thank you guys so much!

@Naturalclar
Naturalclar merged commit 22bc25b into react-native-menu:masterAug 20, 2021
@tido64

Copy link
Copy Markdown
Contributor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

@Saadnajmi
Saadnajmi deleted the new-test-app branch November 15, 2021 16:19
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

Yep! I have a working menu component I wrote for macOS elsewhere that I can port here once I get the chance!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@Saadnajmi@tido64@Naturalclar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

refactor: Use react-native-test-app to manage our test app - #142

Merged
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app
Aug 20, 2021
Merged

refactor: Use react-native-test-app to manage our test app#142
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app

Conversation

@Saadnajmi

@SaadnajmiSaadnajmi commented Jun 27, 2021

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the test app in the repo with one managed by React Native Test App. This is mainly inspired by my want to add macOS support, which is currently blocked by / tracked at #141. Still, setting up the template test app now will make standing up the macOS portion of the test app trivial come time.

"React Native Test App" provides test apps for all platforms as a package. It handles the native bits, allowing you the developer to focus on the JS. There are a few advantages to using this package:

  • It makes RN version updates easier, as it will handle the proper native code changes
  • It makes targeting new platforms (like macOS or Windows) easier, since it has a template to configure each platform's test app.

Steps

I tried to document my steps well with my individual commit messages. In essence:

mv example/ example2 # Move the existing test app out of the way for a bit
yarn add -D react-native-test-app
yarn init-test-app
# The options I chose
# ✔ What is the name of your test app? … MenuExample
# ✔ Which platforms do you need test apps for? › Android, iOS
# ✔ Where should we create the new project? … example
cd example

After this I did a few extra things:

  • Added generated lock files after running yarn / pod install in the new example test app folder
    • cd example && yarn && pod install --project-directory:ios
    • git add yarn.lock ios/Podfile.lock
  • Ran yarn lint --fix to fix lint errors in the generated test app (mostly double quotes vs single quotes)
  • Modified the example test app's package.json to include the following dependency so we can actually test menu:
    • "@react-native-menu/menu": "../"

Then finally, I copied over the JS source from the old test app, and deleted the old test app

rm example/index.js example/App.js
mv example2/index.tsx example.index.tsx
mv example2/src/App.tsx example/src/App.tsx
rm -rf example2/

Test Plan

Locally ran the iOS and Android test apps.

Screen Shot 2021-06-27 at 4 16 11 PM

@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Since I couldn't add you as reviewers..
@tido64 who maintains react-native-test-app
@Naturalclar who maintains react-native menu

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(. I decided to go forward with moving the test app anyway to make it easier to add macOS support in the fut
Keeping this as a draft at the moment because run-ios doesn't work. If that's not a blocker, I can make it a full PR. Working on filing the right bugs in the cli now =)

Comment threadexample/react-native.config.js Outdated
Comment threadexample/yarn.lock Outdated
Comment threadexample/package.json Outdated
@Saadnajmi
Saadnajmi marked this pull request as ready for review August 20, 2021 12:47
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

@Naturalclar This should be ready for review! It should also make updating to RN 0.65 very simple, I just didn't want to bundle that in the same review. Thanks @tido64 for helping fix upstream CLI issues!

@NaturalclarNaturalclar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Saadnajmi@tido64 awesome! thank you guys so much!

@Naturalclar
Naturalclar merged commit 22bc25b into react-native-menu:masterAug 20, 2021
@tido64

Copy link
Copy Markdown
Contributor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

@Saadnajmi
Saadnajmi deleted the new-test-app branch November 15, 2021 16:19
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

Yep! I have a working menu component I wrote for macOS elsewhere that I can port here once I get the chance!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@Saadnajmi@tido64@Naturalclar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

refactor: Use react-native-test-app to manage our test app - #142

Merged
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app
Aug 20, 2021
Merged

refactor: Use react-native-test-app to manage our test app#142
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app

Conversation

@Saadnajmi

@SaadnajmiSaadnajmi commented Jun 27, 2021

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the test app in the repo with one managed by React Native Test App. This is mainly inspired by my want to add macOS support, which is currently blocked by / tracked at #141. Still, setting up the template test app now will make standing up the macOS portion of the test app trivial come time.

"React Native Test App" provides test apps for all platforms as a package. It handles the native bits, allowing you the developer to focus on the JS. There are a few advantages to using this package:

  • It makes RN version updates easier, as it will handle the proper native code changes
  • It makes targeting new platforms (like macOS or Windows) easier, since it has a template to configure each platform's test app.

Steps

I tried to document my steps well with my individual commit messages. In essence:

mv example/ example2 # Move the existing test app out of the way for a bit
yarn add -D react-native-test-app
yarn init-test-app
# The options I chose
# ✔ What is the name of your test app? … MenuExample
# ✔ Which platforms do you need test apps for? › Android, iOS
# ✔ Where should we create the new project? … example
cd example

After this I did a few extra things:

  • Added generated lock files after running yarn / pod install in the new example test app folder
    • cd example && yarn && pod install --project-directory:ios
    • git add yarn.lock ios/Podfile.lock
  • Ran yarn lint --fix to fix lint errors in the generated test app (mostly double quotes vs single quotes)
  • Modified the example test app's package.json to include the following dependency so we can actually test menu:
    • "@react-native-menu/menu": "../"

Then finally, I copied over the JS source from the old test app, and deleted the old test app

rm example/index.js example/App.js
mv example2/index.tsx example.index.tsx
mv example2/src/App.tsx example/src/App.tsx
rm -rf example2/

Test Plan

Locally ran the iOS and Android test apps.

Screen Shot 2021-06-27 at 4 16 11 PM

@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Since I couldn't add you as reviewers..
@tido64 who maintains react-native-test-app
@Naturalclar who maintains react-native menu

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(. I decided to go forward with moving the test app anyway to make it easier to add macOS support in the fut
Keeping this as a draft at the moment because run-ios doesn't work. If that's not a blocker, I can make it a full PR. Working on filing the right bugs in the cli now =)

Comment threadexample/react-native.config.js Outdated
Comment threadexample/yarn.lock Outdated
Comment threadexample/package.json Outdated
@Saadnajmi
Saadnajmi marked this pull request as ready for review August 20, 2021 12:47
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

@Naturalclar This should be ready for review! It should also make updating to RN 0.65 very simple, I just didn't want to bundle that in the same review. Thanks @tido64 for helping fix upstream CLI issues!

@NaturalclarNaturalclar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Saadnajmi@tido64 awesome! thank you guys so much!

@Naturalclar
Naturalclar merged commit 22bc25b into react-native-menu:masterAug 20, 2021
@tido64

Copy link
Copy Markdown
Contributor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

@Saadnajmi
Saadnajmi deleted the new-test-app branch November 15, 2021 16:19
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

Yep! I have a working menu component I wrote for macOS elsewhere that I can port here once I get the chance!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@Saadnajmi@tido64@Naturalclar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

refactor: Use react-native-test-app to manage our test app - #142

Merged
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app
Aug 20, 2021
Merged

refactor: Use react-native-test-app to manage our test app#142
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app

Conversation

@Saadnajmi

@SaadnajmiSaadnajmi commented Jun 27, 2021

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the test app in the repo with one managed by React Native Test App. This is mainly inspired by my want to add macOS support, which is currently blocked by / tracked at #141. Still, setting up the template test app now will make standing up the macOS portion of the test app trivial come time.

"React Native Test App" provides test apps for all platforms as a package. It handles the native bits, allowing you the developer to focus on the JS. There are a few advantages to using this package:

  • It makes RN version updates easier, as it will handle the proper native code changes
  • It makes targeting new platforms (like macOS or Windows) easier, since it has a template to configure each platform's test app.

Steps

I tried to document my steps well with my individual commit messages. In essence:

mv example/ example2 # Move the existing test app out of the way for a bit
yarn add -D react-native-test-app
yarn init-test-app
# The options I chose
# ✔ What is the name of your test app? … MenuExample
# ✔ Which platforms do you need test apps for? › Android, iOS
# ✔ Where should we create the new project? … example
cd example

After this I did a few extra things:

  • Added generated lock files after running yarn / pod install in the new example test app folder
    • cd example && yarn && pod install --project-directory:ios
    • git add yarn.lock ios/Podfile.lock
  • Ran yarn lint --fix to fix lint errors in the generated test app (mostly double quotes vs single quotes)
  • Modified the example test app's package.json to include the following dependency so we can actually test menu:
    • "@react-native-menu/menu": "../"

Then finally, I copied over the JS source from the old test app, and deleted the old test app

rm example/index.js example/App.js
mv example2/index.tsx example.index.tsx
mv example2/src/App.tsx example/src/App.tsx
rm -rf example2/

Test Plan

Locally ran the iOS and Android test apps.

Screen Shot 2021-06-27 at 4 16 11 PM

@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Since I couldn't add you as reviewers..
@tido64 who maintains react-native-test-app
@Naturalclar who maintains react-native menu

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(. I decided to go forward with moving the test app anyway to make it easier to add macOS support in the fut
Keeping this as a draft at the moment because run-ios doesn't work. If that's not a blocker, I can make it a full PR. Working on filing the right bugs in the cli now =)

Comment threadexample/react-native.config.js Outdated
Comment threadexample/yarn.lock Outdated
Comment threadexample/package.json Outdated
@Saadnajmi
Saadnajmi marked this pull request as ready for review August 20, 2021 12:47
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

@Naturalclar This should be ready for review! It should also make updating to RN 0.65 very simple, I just didn't want to bundle that in the same review. Thanks @tido64 for helping fix upstream CLI issues!

@NaturalclarNaturalclar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Saadnajmi@tido64 awesome! thank you guys so much!

@Naturalclar
Naturalclar merged commit 22bc25b into react-native-menu:masterAug 20, 2021
@tido64

Copy link
Copy Markdown
Contributor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

@Saadnajmi
Saadnajmi deleted the new-test-app branch November 15, 2021 16:19
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

Yep! I have a working menu component I wrote for macOS elsewhere that I can port here once I get the chance!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@Saadnajmi@tido64@Naturalclar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

refactor: Use react-native-test-app to manage our test app - #142

Merged
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app
Aug 20, 2021
Merged

refactor: Use react-native-test-app to manage our test app#142
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app

Conversation

@Saadnajmi

@SaadnajmiSaadnajmi commented Jun 27, 2021

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the test app in the repo with one managed by React Native Test App. This is mainly inspired by my want to add macOS support, which is currently blocked by / tracked at #141. Still, setting up the template test app now will make standing up the macOS portion of the test app trivial come time.

"React Native Test App" provides test apps for all platforms as a package. It handles the native bits, allowing you the developer to focus on the JS. There are a few advantages to using this package:

  • It makes RN version updates easier, as it will handle the proper native code changes
  • It makes targeting new platforms (like macOS or Windows) easier, since it has a template to configure each platform's test app.

Steps

I tried to document my steps well with my individual commit messages. In essence:

mv example/ example2 # Move the existing test app out of the way for a bit
yarn add -D react-native-test-app
yarn init-test-app
# The options I chose
# ✔ What is the name of your test app? … MenuExample
# ✔ Which platforms do you need test apps for? › Android, iOS
# ✔ Where should we create the new project? … example
cd example

After this I did a few extra things:

  • Added generated lock files after running yarn / pod install in the new example test app folder
    • cd example && yarn && pod install --project-directory:ios
    • git add yarn.lock ios/Podfile.lock
  • Ran yarn lint --fix to fix lint errors in the generated test app (mostly double quotes vs single quotes)
  • Modified the example test app's package.json to include the following dependency so we can actually test menu:
    • "@react-native-menu/menu": "../"

Then finally, I copied over the JS source from the old test app, and deleted the old test app

rm example/index.js example/App.js
mv example2/index.tsx example.index.tsx
mv example2/src/App.tsx example/src/App.tsx
rm -rf example2/

Test Plan

Locally ran the iOS and Android test apps.

Screen Shot 2021-06-27 at 4 16 11 PM

@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Since I couldn't add you as reviewers..
@tido64 who maintains react-native-test-app
@Naturalclar who maintains react-native menu

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(. I decided to go forward with moving the test app anyway to make it easier to add macOS support in the fut
Keeping this as a draft at the moment because run-ios doesn't work. If that's not a blocker, I can make it a full PR. Working on filing the right bugs in the cli now =)

Comment threadexample/react-native.config.js Outdated
Comment threadexample/yarn.lock Outdated
Comment threadexample/package.json Outdated
@Saadnajmi
Saadnajmi marked this pull request as ready for review August 20, 2021 12:47
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

@Naturalclar This should be ready for review! It should also make updating to RN 0.65 very simple, I just didn't want to bundle that in the same review. Thanks @tido64 for helping fix upstream CLI issues!

@NaturalclarNaturalclar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Saadnajmi@tido64 awesome! thank you guys so much!

@Naturalclar
Naturalclar merged commit 22bc25b into react-native-menu:masterAug 20, 2021
@tido64

Copy link
Copy Markdown
Contributor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

@Saadnajmi
Saadnajmi deleted the new-test-app branch November 15, 2021 16:19
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

Yep! I have a working menu component I wrote for macOS elsewhere that I can port here once I get the chance!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@Saadnajmi@tido64@Naturalclar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

refactor: Use react-native-test-app to manage our test app - #142

Merged
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app
Aug 20, 2021
Merged

refactor: Use react-native-test-app to manage our test app#142
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app

Conversation

@Saadnajmi

@SaadnajmiSaadnajmi commented Jun 27, 2021

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the test app in the repo with one managed by React Native Test App. This is mainly inspired by my want to add macOS support, which is currently blocked by / tracked at #141. Still, setting up the template test app now will make standing up the macOS portion of the test app trivial come time.

"React Native Test App" provides test apps for all platforms as a package. It handles the native bits, allowing you the developer to focus on the JS. There are a few advantages to using this package:

  • It makes RN version updates easier, as it will handle the proper native code changes
  • It makes targeting new platforms (like macOS or Windows) easier, since it has a template to configure each platform's test app.

Steps

I tried to document my steps well with my individual commit messages. In essence:

mv example/ example2 # Move the existing test app out of the way for a bit
yarn add -D react-native-test-app
yarn init-test-app
# The options I chose
# ✔ What is the name of your test app? … MenuExample
# ✔ Which platforms do you need test apps for? › Android, iOS
# ✔ Where should we create the new project? … example
cd example

After this I did a few extra things:

  • Added generated lock files after running yarn / pod install in the new example test app folder
    • cd example && yarn && pod install --project-directory:ios
    • git add yarn.lock ios/Podfile.lock
  • Ran yarn lint --fix to fix lint errors in the generated test app (mostly double quotes vs single quotes)
  • Modified the example test app's package.json to include the following dependency so we can actually test menu:
    • "@react-native-menu/menu": "../"

Then finally, I copied over the JS source from the old test app, and deleted the old test app

rm example/index.js example/App.js
mv example2/index.tsx example.index.tsx
mv example2/src/App.tsx example/src/App.tsx
rm -rf example2/

Test Plan

Locally ran the iOS and Android test apps.

Screen Shot 2021-06-27 at 4 16 11 PM

@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Since I couldn't add you as reviewers..
@tido64 who maintains react-native-test-app
@Naturalclar who maintains react-native menu

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(. I decided to go forward with moving the test app anyway to make it easier to add macOS support in the fut
Keeping this as a draft at the moment because run-ios doesn't work. If that's not a blocker, I can make it a full PR. Working on filing the right bugs in the cli now =)

Comment threadexample/react-native.config.js Outdated
Comment threadexample/yarn.lock Outdated
Comment threadexample/package.json Outdated
@Saadnajmi
Saadnajmi marked this pull request as ready for review August 20, 2021 12:47
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

@Naturalclar This should be ready for review! It should also make updating to RN 0.65 very simple, I just didn't want to bundle that in the same review. Thanks @tido64 for helping fix upstream CLI issues!

@NaturalclarNaturalclar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Saadnajmi@tido64 awesome! thank you guys so much!

@Naturalclar
Naturalclar merged commit 22bc25b into react-native-menu:masterAug 20, 2021
@tido64

Copy link
Copy Markdown
Contributor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

@Saadnajmi
Saadnajmi deleted the new-test-app branch November 15, 2021 16:19
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

Yep! I have a working menu component I wrote for macOS elsewhere that I can port here once I get the chance!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@Saadnajmi@tido64@Naturalclar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

refactor: Use react-native-test-app to manage our test app - #142

Merged
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app
Aug 20, 2021
Merged

refactor: Use react-native-test-app to manage our test app#142
Naturalclar merged 13 commits into
react-native-menu:masterfrom
Saadnajmi:new-test-app

Conversation

@Saadnajmi

@SaadnajmiSaadnajmi commented Jun 27, 2021

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the test app in the repo with one managed by React Native Test App. This is mainly inspired by my want to add macOS support, which is currently blocked by / tracked at #141. Still, setting up the template test app now will make standing up the macOS portion of the test app trivial come time.

"React Native Test App" provides test apps for all platforms as a package. It handles the native bits, allowing you the developer to focus on the JS. There are a few advantages to using this package:

  • It makes RN version updates easier, as it will handle the proper native code changes
  • It makes targeting new platforms (like macOS or Windows) easier, since it has a template to configure each platform's test app.

Steps

I tried to document my steps well with my individual commit messages. In essence:

mv example/ example2 # Move the existing test app out of the way for a bit
yarn add -D react-native-test-app
yarn init-test-app
# The options I chose
# ✔ What is the name of your test app? … MenuExample
# ✔ Which platforms do you need test apps for? › Android, iOS
# ✔ Where should we create the new project? … example
cd example

After this I did a few extra things:

  • Added generated lock files after running yarn / pod install in the new example test app folder
    • cd example && yarn && pod install --project-directory:ios
    • git add yarn.lock ios/Podfile.lock
  • Ran yarn lint --fix to fix lint errors in the generated test app (mostly double quotes vs single quotes)
  • Modified the example test app's package.json to include the following dependency so we can actually test menu:
    • "@react-native-menu/menu": "../"

Then finally, I copied over the JS source from the old test app, and deleted the old test app

rm example/index.js example/App.js
mv example2/index.tsx example.index.tsx
mv example2/src/App.tsx example/src/App.tsx
rm -rf example2/

Test Plan

Locally ran the iOS and Android test apps.

Screen Shot 2021-06-27 at 4 16 11 PM

@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Since I couldn't add you as reviewers..
@tido64 who maintains react-native-test-app
@Naturalclar who maintains react-native menu

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(. I decided to go forward with moving the test app anyway to make it easier to add macOS support in the fut
Keeping this as a draft at the moment because run-ios doesn't work. If that's not a blocker, I can make it a full PR. Working on filing the right bugs in the cli now =)

Comment threadexample/react-native.config.js Outdated
Comment threadexample/yarn.lock Outdated
Comment threadexample/package.json Outdated
@Saadnajmi
Saadnajmi marked this pull request as ready for review August 20, 2021 12:47
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

@Naturalclar This should be ready for review! It should also make updating to RN 0.65 very simple, I just didn't want to bundle that in the same review. Thanks @tido64 for helping fix upstream CLI issues!

@NaturalclarNaturalclar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Saadnajmi@tido64 awesome! thank you guys so much!

@Naturalclar
Naturalclar merged commit 22bc25b into react-native-menu:masterAug 20, 2021
@tido64

Copy link
Copy Markdown
Contributor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

@Saadnajmi
Saadnajmi deleted the new-test-app branch November 15, 2021 16:19
@Saadnajmi

Copy link
Copy Markdown
ContributorAuthor

Alas, I couldn't add macOS support because react-native-macos isn't on 0.64 yet :(.

Btw, the first 0.64 versions of react-native-macos is quite usable now ;)

Yep! I have a working menu component I wrote for macOS elsewhere that I can port here once I get the chance!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@Saadnajmi@tido64@Naturalclar