import React, {useRef, useEffect} from 'react';
import {View, StyleSheet} from 'react-native';
import Reanimated, {Easing} from 'react-native-reanimated';

import {ReanimatedArcBase} from './ReanimatedArc';

const App = () => {
  const arcAngle = useRef(new Reanimated.Value(-90));

  const animate = () =>
    Reanimated.timing(arcAngle.current, {
      toValue: 270,
      easing: Easing.inOut(Easing.quad),
      duration: 2000,
    }).start();

  useEffect(() => {
    animate();
  }, []);

  return (
    <View style={styles.wrapper}>
      <ReanimatedArcBase
        color="#121330"
        diameter={200}
        width={20}
        lineCap="round"
        arcSweepAngle={160}
        rotation={Reanimated.add(arcAngle.current, 10)}
        style={styles.arc1}
      />
      <ReanimatedArcBase
        color="#3eefd8"
        diameter={140}
        width={20}
        lineCap="round"
        arcSweepAngle={170}
        rotation={Reanimated.multiply(
          Reanimated.sub(arcAngle.current, 185),
          -1,
        )}
        style={styles.arc2}
      />
      <ReanimatedArcBase
        color="#121330"
        diameter={80}
        width={20}
        lineCap="round"
        arcSweepAngle={180.1}
        rotation={arcAngle.current}
        style={styles.arc3}
      />
    </View>
  );
};

const styles = StyleSheet.create({
  wrapper: {
    width: 200,
    height: 200,
  },
  arc1: {
    position: 'absolute',
  },
  arc2: {
    position: 'absolute',
    left: 30,
    top: 30,
  },
  arc3: {
    position: 'absolute',
    left: 60,
    top: 60,
  },
});

export default App;