Skip to content

Commit

Permalink
Merge pull request #7 from yourssu/feat/#4
Browse files Browse the repository at this point in the history
LogClick 구현
  • Loading branch information
Hanna922 authored Jan 31, 2024
2 parents ae8c130 + cb57b44 commit 4ac5e08
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 8 deletions.
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/Logger.ts"></script>
<script type="module" src="/src/demo/main.tsx"></script>
</body>
</html>
15 changes: 13 additions & 2 deletions src/LogClick.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
import { Children, cloneElement } from 'react';
import { useYLSLogger } from '.';
import { LogPayloadParams } from './types/LogPayloadParams';

interface Props {
children: React.ReactNode;
children: React.ReactElement;
params: LogPayloadParams;
}

export const LogClick = ({ children, params }: Props) => {
const logger = useYLSLogger();
const child = Children.only(children);

return <></>;
return cloneElement(child, {
onClick: (...args: any[]) => {
logger.click(params);

if (child.props && typeof child.props['onClick'] === 'function') {
return child.props.onClick(...args);
}
},
});
};
1 change: 1 addition & 0 deletions src/LogScreen.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { useYLSLogger } from '.';
import { useLocation } from 'react-router-dom';
import { useEffect } from 'react';
import { LogPayloadParams } from './types/LogPayloadParams';

interface Props {
children: React.ReactNode;
Expand Down
8 changes: 5 additions & 3 deletions src/Logger.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { LogPayloadParams } from './types/LogPayloadParams';

interface LoggerType {
path: string;
platform: string;
Expand All @@ -17,12 +19,12 @@ const createTimestamp = () => {
};

export const useYLSLogger = () => {
const screen = ({ path }: LoggerType) => {
const screen = ({ path }: LogPayloadParams) => {
// console.log(`Logging screen information for path: ${path}`);
};

const click = ({ name }: LoggerType) => {
// console.log(`Logging click information for button: ${name}`);
const click = ({ name }: LogPayloadParams) => {
console.log(`Logging click information for button: ${name}`);
};

return {
Expand Down
22 changes: 22 additions & 0 deletions src/demo/App.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { useState } from 'react';
import { LogClick } from '../LogClick';

export const App = () => {
const [count, setCount] = useState(0);

return (
<>
<h1>Vite + React</h1>
<div className="card">
<LogClick
params={{
userId: 123,
name: 'click',
}}
>
<button onClick={() => setCount((count) => count + 1)}>count is {count}</button>
</LogClick>
</div>
</>
);
};
9 changes: 9 additions & 0 deletions src/demo/main.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import { App } from './App';

ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<App />
</React.StrictMode>
);
5 changes: 3 additions & 2 deletions src/types/LogPayloadParams.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
interface LogPayloadParams {
path: string;
export interface LogPayloadParams {
userId: number;
name: string;
path?: string;
message?: string;
tags?: string[];
}

0 comments on commit 4ac5e08

Please sign in to comment.