From 011c880ffebf86b5edb46362237bda7fea4d1526 Mon Sep 17 00:00:00 2001
From: Nishchay Kaushik <kaushiknishchay@gmail.com>
Date: Mon, 2 Nov 2020 12:45:34 +0530
Subject: [PATCH] fix: use new context api (#37)

* fix: use the newer context api

* chore: remove prop-types usage and dependency
---
 package.json             |  8 +++-----
 src/index.js             |  4 ++--
 src/meta_tags.js         |  7 +++----
 src/meta_tags_context.js | 29 ++++++++++++++++++-----------
 src/react_title.js       |  4 ----
 5 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/package.json b/package.json
index adcdf57..c174d5a 100644
--- a/package.json
+++ b/package.json
@@ -65,10 +65,8 @@
     "webpack-dev-server": "^3.1.7"
   },
   "peerDependencies": {
-    "react": "^0.14 || ^15.0.0 || ^ 16.0.0",
-    "react-dom": "^0.14 || ^15.0.0 || ^ 16.0.0"
+    "react": "^16.0.0",
+    "react-dom": "^16.0.0"
   },
-  "dependencies": {
-    "prop-types": "^15.6.0"
-  }
+  "dependencies": {}
 }
diff --git a/src/index.js b/src/index.js
index 8db02a7..b1d6ec0 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,6 +1,6 @@
-import MetaTagsContext from './meta_tags_context';
+import MetaTagsContext, {MetaContext} from './meta_tags_context';
 import MetaTags from './meta_tags';
 import ReactTitle from './react_title';
 
 export default MetaTags;
-export {MetaTags, MetaTagsContext, ReactTitle};
+export {MetaContext, MetaTags, MetaTagsContext, ReactTitle};
diff --git a/src/meta_tags.js b/src/meta_tags.js
index ab3c1f0..ce07ba1 100644
--- a/src/meta_tags.js
+++ b/src/meta_tags.js
@@ -1,14 +1,13 @@
 import React, {Component} from 'react';
-import PropTypes from 'prop-types';
 import ReactDOM from 'react-dom';
 import {getDuplicateTitle, getDuplicateCanonical, getDuplicateMeta, appendChild, removeChild} from './utils';
+import { MetaContext } from './meta_tags_context';
 
 
 /** An wrapper component to wrap element which need to shifted to head **/
 class MetaTags extends Component {
-  static contextTypes = {
-    extract: PropTypes.func
-  };
+  static contextTypes = MetaContext;
+
   componentDidMount() {
     this.temporaryElement = document.createElement('div');
     this.handleChildrens();
diff --git a/src/meta_tags_context.js b/src/meta_tags_context.js
index 008f741..64b244d 100644
--- a/src/meta_tags_context.js
+++ b/src/meta_tags_context.js
@@ -1,17 +1,24 @@
-import {Component, Children} from 'react';
-import PropTypes from 'prop-types';
+import React, {Component, Children, createContext} from 'react';
+
+const MetaContext = createContext({
+  extract: () => {},
+});
 
 /** context class which passes extract fuunction to MetaTags Component **/
-class MetaTagsContext extends Component {
-  static childContextTypes = {
-    extract: PropTypes.func
-  }
-  getChildContext() {
-    return {extract: this.props.extract};
-  }
+class MetaContextProviderWrapper extends Component {
   render() {
-    return Children.only(this.props.children);
+    return (
+      <MetaContext.Provider
+        value={{
+          extract: this.props.extract,
+        }}
+      >
+        {Children.only(this.props.children)}
+      </MetaContext.Provider>
+    );
   }
 }
 
-export default MetaTagsContext;
+export {MetaContext};
+
+export default MetaContextProviderWrapper;
diff --git a/src/react_title.js b/src/react_title.js
index c4bd75d..44f473f 100644
--- a/src/react_title.js
+++ b/src/react_title.js
@@ -1,11 +1,7 @@
 import React, {Component} from 'react';
-import PropTypes from 'prop-types';
 import MetaTags from './meta_tags';
 
 class ReactTitle extends Component {
-  static propTypes = {
-    title: PropTypes.string
-  }
   render() {
     return (<MetaTags>
       <title>
-- 
GitLab